Android---APP反编译(Windows篇)

1,962 阅读2分钟

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 电脑准备存放的位置(不填写就默认当前目录)