说明
了解移动平台上的漏洞,因为越来越多的用户正在使用个人智能手机,而这类设备操作复杂,我们可能无法理解其背后的漏洞。今天的课程将以
OWASP TOP 10
(web也有对应的top 10
)提供的十大移动漏洞为指导。阅读这个网站,里面对这个top 10 都有介绍
OWASP Mobile Top 10
:
- M1 - 平台使用不当
- M2 - 不安全的数据存储
- M3 - 不安全的通信
- M4 - 不安全的身份验证
- M5 - 弱加密
- M6 - 不安全的授权
- M7- -客户端代码质量
- M8- -代码篡改
- M9– 逆向工程
- M10- 无关功能
环境准备
- 这里使用这个网站提供的
apk
安装包- 这个
github
上面提供的安全测试的资料文档可以仔细研读
- 这个
M9– 逆向工程
工具介绍
ApkTool
是主要查看res
文件下xml
文件、AndroidManifest.xml
、classes.dex
。(注意:如果直接解压.apk
文件,xml
文件打开全部是乱码)dex = Dalvik Executable format
- dex文件:逻辑类似于
java
的class
文件 - 安卓系统中,用Dalvik虚拟机(DVM = Dalvik Virtual Machine)去把java源代码编译为dex可执行文件(
Dalvik Executable
)
dex2jar
作用:将apk
反编译成Java
源码(classes.dex
转化成ja
r文件)jd-gui
作用:查看APK
中classes.dex
转化成出的jar
文件,即源码文件
工具安装
- 安装
apktool
,本机安装好java 1.8+
,打开安装网页,我亲自测试过了,apktool解压后的文件没有发现classes.dex
,所以后面还是采用改后缀名解压
前三个步骤分别是,下载一个
apktool.bat
文件,下载apktool_version.jar
文件后,并重命令为apktool.jar
,然后把apktool.bat
和apktool.jar
放在同一个目录下打开dex2jar,下载最新的版本为:
dex2jar-2.1
打开jd-gui,下载最新的版本为:
jd-gui-windows-1.6.6.zip
开始工作
- 看下我提前准备好的工具
- 执行命令
1 | D:\appsafetest>apktool d diva-beta.apk |
- 成功把
apk
解压,到res
目录发现居然没有classes.dex
还是换成改后缀名为
.zip
,然后解压的方式得到了classes.dex
使用
dex2jar
进行反编译(下载jdk7,修改环境变量),提前把解压中的classes.dex
放到dex-tools-2.1
目录中
1 | D:\appsafetest\dex-tools-2.1>java --version |
- 使用
d2j-dex2jar
执行反编译命令,在当前文件夹会出现一个classes-dex2jar.jar
1 | D:\appsafetest\dex-tools-2.1>d2j-dex2jar.bat classes.dex |
- 使用
jd-gui
打开classes-dex2jar.jar
其他
常见的破解app的流程,这里是最基础也是最关键的:
得到
classes.dex
- 解压
apk
得到classes.dex
,用传统的unzip
,apktool
- 如果涉及到加固方面的东西,有普通加固和商家收费的加固,如果是普通加固可以采用:
夜神模拟器
+FDex2
+Xposed
- 解压
从
dex
文件反编译出jar
包,比如用的这个工具dex2jar
从
jar
包反编译出java
源代码,比如反编辑器工具jd-gui
使用
jd-gui
反编译出来查看的可能是smali
文件,所以要学习一些smali
基本的语法,这里修改代码修改完代码后,就要重新打包成
APK
文件了,可以采用apktool
来打包得到新的apk
然后就是签名操作,打包得到的
apk
文件无法安装,需要签名,可以采用keytool -genkey -keystore
和jarsigner -verbose -keystore
,签名成功后,apk包就可以安装成功当然网络上也有一些工具把这些集成在一起了,比如改之理、ApkToolkit