反编译过程
用到三个工具:
- 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.apkI: Using Apktool 2.3.4 on test.apkI: Loading resource table...I: Decoding AndroidManifest.xml with resources...I: Loading resource table from file: 1.apkI: 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 testI: Using Apktool 2.3.4 on testI: 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编译报错文件名或扩展名太长这篇文章
