说明
了解移动平台上的漏洞,因为越来越多的用户正在使用个人智能手机,而这类设备操作复杂,我们可能无法理解其背后的漏洞。今天的课程将以
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转化成jar文件)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