常见APK反编译工具安装与使用
安装
一些常见工具都可以通过 homebrew 或 homebrew-cask 安装
brew install apktool
brew install smali
brew install dex2jar
brew install jadx
brew cask install jd-gui
APK Analyzer
Android Studio 自带的 APK Analyzer 可直接查看APK内的 图片,xml内容,dex结构,文件尺寸等,还可以比较两个apk的差异。
虽然不能导出资源有点可惜,但已经很强大方便了。
用法:将 apk 拖入 AndroidStudio 就好了
参考:https://developer.android.com/studio/build/apk-analyzer.html
apktool
apk 虽然实际上是个 zip 可以直接 unzip,但里边的 xml 都是 Binaray XML
形式,需要再次转化成 xml 才能查看。
apktool 可以将 apk 内的资源全部提取出来,同时 xml 也转化好可直接查看内容。
apktool 也可以用于在修改资源后重新打包 apk
用法:
// 提取资源
apktool d test.apk
// 提取资源并指定输出目录
apktool d test.apk -o test
// 重新打包apk
apktool b test
参考:https://ibotpeaches.github.io/Apktool/
smali/baksmali
baksmali 可将 dex/odex 转成 .smali 文件集
smali 可将 .smali 文件集 转成 dex/odex
注:odex 转 smali 需要相应系统的 framework,adb pull /system/framework
用法:
// 将 test.dex 分解到 test 目录
baksmali test.dex -o test
// 将 test 目录里的 smali 文件组装到 haha.dex
smali test -o haha.dex
// 获取系统 framework
adb pull /system/framework
// 将 test.odex 分解到 test 目录
baksmali test.odex b framework -o test
参考: https://github.com/JesusFreke/smali/wiki
下载:https://bitbucket.org/JesusFreke/smali/downloads
dex2jar
dex2jar 可将 .dex 转换成 .jar
用法:
// 将 test.dex 转成 test.jar 文件
d2j-dex2jar test.dex -o test.jar
参考: https://github.com/pxb1988/dex2jar
下载:https://bitbucket.org/pxb1988/dex2jar/downloads
jadx
jadx 可以将 .dex/.jar/.class
文件反编译成 .java 源码
jadx 也可以直接反编译 .apk 并处理好资源(binary xml -> xml)
jadx-gui 可视化查看工具
用法:
// 反编译 test.dex 并输出到 test 目录
jadx test.dex -d test
// 反编译 test.apk
jadx test.apk -d test
// 反编译 test.jar
jadx test.jar -d test
// 反编译 test.class
jadx test.class -d test
参考:https://github.com/skylot/jadx
jd-gui
jd-gui 可视化反编译查看 .jar 文件
其它资源
APK 在线反编译
http://www.javadecompilers.com/apk
反编译apk的步骤
https://segmentfault.com/a/1190000007359713
手把手教你逆向分析 Android 程序
https://segmentfault.com/a/1190000005133219
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
http://blog.csdn.net/jiangwei0910410003/article/details/51671019