Android反编译apk看源代码

简介:

工具 作用 使用方法
apktool 可从 apk 中提取出 resource、dex、manifest、xml 等文件,修改后可 rebuild 出新 apk // decode apk文件
apktool d <target.apk dir> -o <dir>
// rebuild 出 apk 文件
apktool -b <dir> -o <target.apk>
dex2jar 将 dex 文件变成一个(包含class 文件的)jar 文件 sh <dir path>/d2j-dex2jar.sh <dex path>/classes.dex -o <output path>.jar
JD-GUI jar包可视化工具 直接将jar包拖入JD-GUI中即可查看

安装 + 示例

1. 安装 apktool <mac系统>

官网链接: apktool官方网站

  1. Mac系统下最简单安装方式:手动安装
  • 官网下载 Mac wrapper script,如果为脚本文件,直接复制保存为apktool,不要任何扩展名;
  • 下载最新 apktool-2,重命名为 apktool.jar。
  • chmod +x 命令修改两个文件 apktool 和 apktool.jar 的可执行权限。
  • 将 apktool 和 apktool.jar 复制到目录 /usr/local/bin 目录下。


    apktool 和 apktool.jar 保存到桌面 apktool 文件夹中

依次执行命令

VCMac-mini:~ vc$ cd /Users/vc/Desktop/apktool 
VCMac-mini:apktool vc$ chmod +x apktool
VCMac-mini:apktool vc$ chmod +x apktool.jar
VCMac-mini:apktool vc$ ls -al
total 39056
drwxr-xr-x@  5 vc  staff       160  8  1 16:55 .
drwx------@ 44 vc  staff      1408  8  1 16:52 ..
-rw-r--r--@  1 vc  staff      6148  8  1 16:54 .DS_Store
-rwxr-xr-x@  1 vc  staff      2860  8  1 16:53 apktool
-rwxr-xr-x   1 vc  staff  19981711  8  1 13:02 apktool.jar
VCMac-mini:apktool vc$ cp apktool /usr/local/bin
VCMac-mini:apktool vc$ cp apktool.jar /usr/local/bin
/usr/local/bin 文件下 apktool

使用 apktool

VCMac-mini:~ vc$ >apktool d /Users/vc/Desktop/app.apk -o /Users/vc/Destop/

解析出目录如下:


app.apk 反编译文件目录

2. 安装 dex2jar

官方地址:dex2jar github 链接

  • 下载解压到本地


    dex2jar 工具目录
  • 运行命令
VCMac-mini:~ vc$ sh /Users/vc/dex-tools-2.1/d2j-dex2jar.sh /Users/vc/Desktop/appApk/app.apk -o  /Users/vc/Desktop/appApk/app-dex2.jar
dex2jar /Users/vc/Desktop/appApk/app.apk -> /Users/cyou/Desktop/appApk/app-dex2.jar
VCMac-mini:~ vc$
  • 得到的 jar 文件


    app.apk 解析出的 jar 包目录

3. 安装 JD-GUI

官方地址:JD-GUI github 链接

  • 将 JD-GUI 下载解压到本地


    JD-GUI 文件目录
  • 直接打开 JD-GUI,将上一步生成的 app-dex2.jar 拖入 JD-GUI 即可。


    JD-GUI 打开 app-dex2.jar 目录
  • 解压出来的 JD-GUI,打开如果遇到 jdk 1.8 的错误,原因是mac新系统JDK的存储位置和老版本中不一样了,下载 github issue 中的 universalJavaApplicationStub.sh,替换掉 JD-GUI -> 显示包内容 -> Contents -> MacOS -> universalJavaApplicationStub.sh 后,再重新打开。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容