androidapp渗透测试,androidapp渗透测试⽅法⼤全.pdf Android APP 渗透测试⽅法⼤全
by backlion
⼀、Android APP 渗透测试⽅法
1.测试环境
SDK : J a JDK , Android SDK。
⼯具: 7zip, dex2jar ,jd -gui, apktool, IDA pro (6.1), ApkAnalyser , Eclipse,
dexopt-wrapper ,
010 editor , SQLite Studio, ApkIDE。
apk ⼯具: android 组件安全测试⼯具, activity 劫持测试⼯具, android 击键记录
测试⼯具,
⼯具(proxydroid), MemSpector, Host Editor
2.客户端程序安全测试
2.1 数字签名检测
eclipse开发手机appC:\ Program Files\J a\jdk1.8.0_111\ -verify APK ⽂ 件 路 径
-verbose –certs
当输出结果为“jar 已验证”时,表⽰签名正常
检测签名的 CN 及其他字段是否正确标识客户端程序的来源和发布者⾝份
如上图,说明测试结果为安全。
要说明的是,只有在使⽤直接客户的 签名时,才认为安全。 Debug 、第 (如
开发⽅) 等等均认为风险。
2.2.反编译检测
把 apk 当成 zip 并解压,得到 classes.dex ⽂件(有时可能不⽌⼀个 dex ⽂件,但⽂
件名⼤多类似)
使⽤ dex2jar 执⾏如下命令:
dex2jar.bat classes.dex ⽂件路径
得到 classes.dex.jar
然后使⽤ jd -gui 打开 jar ⽂件,即可得到 J A 代码。【注: 直接使⽤ smali2j a 或
者 APKAnalyser 打开 apk ⽂件,也可反编译回 J a 代码】
【注:有时⽤apktool 能够解包并查看 smali,但 dex2jar 却不⾏。如果 dex2jar 反编
译失败,可以试试看能 恢复 smali 代码。】逆向后发现是没混淆的情况,是不安全的。
如果代码经过混淆,或者有加壳措施, 完整恢复源代码的,都可以认为此项安全 ,混淆
后的代码样例,除了覆写和接⼝以外的字段都是⽆意义的名称。如下图已加密混淆 ,除了覆
写和接⼝以外的字段都是⽆意义的名称::
反编译为 smali 代码
使⽤ apktool ⼯具可以对 apk 进⾏解包。具体的解包命令格式为:apktool d[ecode] [OPTS] [
1.如果只需要修改 smali 代码,不涉及资源⽂件的修改,可以在解包时加⼊ -r 选项(也
以直接使⽤ baksmali 将 dex 反编译为 smali 代码,见 5.3),不解码 apk 中的资源。
在打包时可以避免资源⽅⾯的问题(如 aapt 报的各种错误)。
2. 如果只需要反编译资源⽂件,可以在解包时加⼊-s 选项,不对 classes.dex 进⾏反编译。
3. 如果在 5.6.1 使⽤ apktool 打包 smali 代码中出现资源相关的错误,可能是需要较新
framework ⽂件。可 此处,添加 framework ⽂件。例如,添加 Android 4.4.2 SDK
中的 framework ⽂件,命令如下:
4. 解包时指定相应的 framework (上⾯命令中的tag0 是对添加的 framework 的标记,
⽤于标识不同的 framework),如图所⽰:
解包完成后,会将结果⽣成在指定的输出路径中,其中,smali ⽂件夹下就是最终⽣成的Dalvik VM 汇编代码,l ⽂件以及 res ⽬录下的资源⽂件也已被解码。如图:
处 理 odex ⽂