1.准备工作
下载软件:
apktool:把apk文件反编译为smali 语言,里面可以查看一些静态资源(图片、XML配置、语言资源等文件)
dex2jar:把存有java内容的dex文件反编译(classes.dex转化成jar文件)
jd-gui:分析java代码的Java反编译器
2.测试流程
1)使用Apktool反编译apk为smali 语言
# 进入到apktool所在目录,APK放在同一目录下
# 执行命令
java -jar apktool.jar包的文件名 d -f 要反编译软件包名 -o 要输出的文件夹
AndroidManifest.xml 是 Android 项目中的清单文件,可以直接打开查看
res 是资源文件,layout 和 value 都在这里
smali 文件夹 是相关的Java 代码转换为 Smali 语言后的文件。
2)使用dex2jar反编译dex文件得到jar文件
# apk文件更改后缀名为zip,然后解压得到文件夹
# 拷贝文件夹下的classes.dex文件到dex2jar文件夹下
# cmd下到dex2jar目录下执行命令
d2j-dex2jar classes.dex
# 文件夹下会得到文件classes-dex2jar.jar
3)使用jd-gui打开反编译的jar文件
经常使用的搜索关键字:rawQuery(将数据保存到SQLite数据库),可以在代码中使用rawQuery方法,进而检测SQL注入攻击 keys,execSQl,password
4)通过模拟器脱壳
有些APK做了加壳技术来防止被反编译,jd-gui查看的反编译文件个数可能会对不上,所以需要对APK进行脱壳 所需APK:需要脱壳的APK,XposedInstaller,dumpdex1.0
下载mumu模拟器,需要开启root权限
安装XposedInstaller
#连接模拟器
adb connect 127.0.0.1:7555
#安装APK
adb install XposedInstaller_3.1.5.apk
安装XposedInstaller成功后重启模拟器
安装dumpdex,和你要脱壳的软件。
dumpdex安装完成是看不到软件图标的,打开Xposed之前安装成功会显示,框架已激活。然后点击左上角查看模块,勾选,然后重启模拟器,
打开需要脱壳的APP,然后关闭。
adb shell进入模拟器
cd /data/data/你脱壳软件的APP包名
文件夹下有个文件夹dump,文件夹下有dex文件
adb pull /data/data/{你所脱壳的软件包目录名}/dump 电脑准备存放的位置(不填写就默认当前目录)