Android 反编译[持续更新]

1,091 阅读2分钟

反编译代码

使用到的工具:

  • dex2jar -- 将dex文件转换成jar文件
  • jd_gui -- 将jar文件转换成java代码

具体操作

dex2jar

  1. 将想要反编译的 apk 文件重命名为 zip 文件,并解压得到相关的文件夹。
  2. 将解压文件中的 dex 文件防止到 dex2jar 解压出来的目录下,进入该目录下执行命令行
d2j-dex2jar class.dex

如果没有什么错误的话,dex2jar 目录下会多一个 jar 文件,该文件就是该工具成功转换出来的 jar 文件。

jd-gui 工具使用

打开通过 dex2jar 生成的 jar 文件,就可以查看相应的 java 代码。

反编译资源

通过解压方式获得资源文件是在打包过程中被编译过的,直接打开是看不到明文代码的,所以我们要对资源文件进行反编译,这时我们就需要另外一个工具了-- apktool 了,更工具能够极大程度的还原 apk 中的资源文件。

具体操作

  1. 下载两个文件, apktool.jar 和 apktool.bat 两个文件,将两文件放置于同一个文件夹下。
  2. 将反编译的 apk 文件拷贝到该文件夹下
  3. 通过终端进入该文件目录下,执行命令:
apktool d xxx.apk

apktool 附加参数含义

  • -f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
  • -o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。
  • -s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
  • -r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)

通过以上操作,APK 资源反编译的工作完成,可以正正常查看APK 资源文件。如果操作失败,请根据相应的错误信息进入搜索查询。