反编译过程

用到三个工具:

  • Apktool:反编译APK文件以及重新编译APK目录
  • dex2jar:顾名思义,将dex文件反编译成jar文件
  • JD Project:分四种:JD-Core、JD-GUI、JD-Eclipse、JD-IntelliJ,将jar文件反编译成Java文件

Apktool

可以去Apktool安装查看各个系统的如何配置,也可以直接使用Java命名。

反编译

  1. $ java -jar apktool.jar d test.apk
  2. I: Using Apktool 2.3.4 on test.apk
  3. I: Loading resource table...
  4. I: Decoding AndroidManifest.xml with resources...
  5. I: Loading resource table from file: 1.apk
  6. I: Regular manifest package...
  7. I: Decoding file-resources...
  8. I: Decoding values */* XMLs...
  9. I: Baksmaling classes.dex...
  10. I: Copying assets and libs...
  11. I: Copying unknown files...
  12. I: Copying original files...

编译

  1. $ java -jar apktool.jar b test
  2. I: Using Apktool 2.3.4 on test
  3. I: Checking whether sources has changed...
  4. I: Smaling smali folder into classes.dex...
  5. I: Checking whether resources has changed...
  6. I: Building resources...
  7. I: Building apk file...
  8. I: Copying unknown files/dir...

dex2jar

用法

  1. 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编译报错文件名或扩展名太长这篇文章