Android 的安装包APK实际上就是一个zip压缩包,把后缀改成zip即可对其进行解压,dex文件是Android的字节码文件,so文件是C++的机器码文件。
├── AndroidManifest.xml
├── assets
├── classes.dex
├── classes2.dex
├── classes3.dex
├── lib
│ └── armeabi-v7a
│ └── libtxffmpeg.so
├── res
│ ├── drawable
│ └── drawable-nodpi-v4
└── resources.arsc
dex2jar
dex2jar 可以把dex文件转换成jar文件,jar文件可以通过JD-GUI工具打开。
sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
JD-GUI
jd-gui 是一个图形化的jar查看工具。
JADX-GUI
jadx 是apk图形化查看工具,比JD-GUI更加强大,可以直接打开apk,查看java源码和xml源码。
readelf
是用于对C++机器码的分析,一般用于查看ELF格式的文件信息,常见的文件如在Linux上的可执行文件,动态库(.so)或者静态库(.a) 等包含ELF格式的文件。
IDA Pro
付费的反汇编工具,功能非常强大。是目前最好的一个静态反编译软件。可以用于so文件的静态分析,动态调试。
Xposed Hook
Xposed 是非常强大的动态逆向分析框架,可以动态获取APP运行时参数,修改数据。
Android 逆向工程:基于Xposed Hook实现动态逆向分析
apktool
apktool 是Google提供的APK编译工具。
- 将资源解码成原来的形式
- 将解码的资源重新打包成apk/jar
- 组织和处理依赖于框架资源的APK
- Smali调试
- 执行自动化任务