环境:
Java JDK
Android Studio
Nexus5 真机
天天模拟器
Android逆向工具
命令行工具:
AndroidManifest.xml清单文件解密工具
java -jar AXMLPrinter2.jar 清单文件
DEX文件反汇编、汇编工具
DEX文件是Android Java代码编译生成的二进制文件,包含了虚拟机指令(dalvik虚拟机)
- baksmali.jar (反汇编工具,将虚拟机指令反汇编成Smali代码)
java -jar baksmali.jar dex文件 -o 输出目录
反汇编生产的目录中,包括所有dex文件中的类代码,每一个类就是一个smali文件
Java中有三种类:外部类、内部类、匿名类 - smali.jar (汇编工具,将smali代码汇编生产dex文件)
java -jar smali.jar 目录 -o dex文件
apk签名工具
java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk
apk反编译工具-apktool
- 反编译apk
java -jar apktool.jar d apk文件
- 将清单文件以及其他xml文件解密
- 将资源序号文件(resources.arsc)与资源名称做了一个对应关系表生成在了/res/valus/public.xml
- 将 dex 文件反编译成了 Smali 代码
- 回编译 apk 目录
java -jar apktool.jar b 反编译的apk文件目录
生成的apk在 反编译的apk文件目录/dist中
apk GUI 反汇编工具
Jadx
JEB
apktool反编译时出现错误
- Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
原因:resource.arsc文件格式被篡改
- java.io.IOException: Expected: 0x00080003, got: 0x00080000