反编译过程
用到三个工具:
- Apktool:反编译APK文件以及重新编译APK目录
- dex2jar:顾名思义,将dex文件反编译成jar文件
- JD Project:分四种:JD-Core、JD-GUI、JD-Eclipse、JD-IntelliJ,将jar文件反编译成Java文件
Apktool
可以去Apktool安装查看各个系统的如何配置,也可以直接使用Java命名。
反编译
$ java -jar apktool.jar d test.apk
I: Using Apktool 2.3.4 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
编译
$ java -jar apktool.jar b test
I: Using Apktool 2.3.4 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
dex2jar
用法
sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
将输出apk_to_decompile-dex2jar.jar
不再需要解压APK单独处理dex文件了,当然也可以这么做,命令相同,将APK换成dex即可
其实解压dex2jar.zip能看到还有其他工具,dex2smali、jar2dex、jar2jarsmin等等
JD Project
去官网下载Windows版,双击exe文件运行,然后将jar文件拖到界面上即可。
其他:
- JD-Core:jar包,用作库文件
- JD-Eclipse:Eclipse插件
- JD-IntelliJ:IntelliJ插件
问题
Apktool编译报错文件名或扩展名太长
答:看 Apktool编译报错文件名或扩展名太长
这篇文章