反编译 apk 的常用工具

Feb 10 2020

有时候要分析 apk 中的内容,比如 AndroidManifest,或者 dex 文件,这里分享 2 个常用的工具

apktool

官方地址:https://ibotpeaches.github.io/Apktool/

该工具在解析 xml 文件方面比较给力,比如 AndroidManifest.xml 或者是 res 目录下的布局 xml。当然它也能解析出代码,但生成的格式是 smali 或者 kotlin_metadata,不方便阅读,因此我常用来解析 xml 用

反编译用法也简单

1
$ java -jar apktool.jar d test.apk

就在工具目录下生成 apk 同名目录

同时,它还能将反编译的包再打包生成 apk 文件,命令同样简单

1
$ java -jar apktool.jar b test --frame-path $ANDROID_HOME

这样在 test 包下的 dist 目录中生成 apk

dex2jar

地址:https://github.com/pxb1988/dex2jar

这个工具用来解析 classes.dex 文件,解析完成后用查看 class 文件的工具,比如 jd-gui.exe 就能阅读源码了

这个工具是个套件,支持多种转换格式,我常用的就是 d2j-dex2jar.jar

1
$ d2j-dex2jar.jar --force classes.dex

在目录下生成 classes.jar 就是转换好的 class 文件。注意经常更新到最新版本,才能更好支持到新版本的 Android apk 编译的 dex 文件

今天的分享就到这里,利用好这两个工具,能够在日常分析 Android 问题的过程中带来很大的便利