Mac反编译apk程序

本教程以macOS 10.13为例。

准备工作

下载最新的JDK

前往ORACLE官网,在底部找到Download Java for Developers,点击该链接,在打开的页面中找到JDK,选择Download,然后下载对应的版本即可。

配置JDK

下载完成后,打开dmg镜像进行安装。JDK会被安装到/Library/Java/JavaVirtualMachines目录下。为了能在终端正确运行最新的JDK,需要配置环境变量。在~/.bash_profile中增加以下内容:

1
2
3
4
5
6
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH

其中,将jdk1.8.0_40.jdk换成你所安装的JDK对应的版本和目录。修改完成后,重开终端或使用

1
source ~/.bash_profile

使环境变量生效。

下载apk反编译组件

需要下载的程序包括:

进行反编译

运行Apktool

按照官网上的教程,将下载Apktool后得到的shell脚本和apktool.jar移动到/usr/local/bin,然后在终端执行apktool -h,如果能正确显示帮助信息,则安装正常。
将需要反编译的apk文件(例如example.apk)放入任意目录中,cd进入该目录,执行

1
apktool d example.apk

即可进行反编译,这时会生成一个名为example的目录,用于存储反编译出的文件。如果要回编译,执行

1
apktool b example

同样,直接解压example.apk也可以得到一部分信息,如classes.dex等。

用dex2jar将apk转成jar文件

下载dex2jar的releases版本后,解压进入文件夹,然后运行:

1
./d2j-dex2jar.sh path/to/example.apk

在dex2jar目录下将得到example-dex2jar.jar文件

查看源代码

打开JD-GUI.app,将example-dex2jar.jar拖进去就能看到源码了。
需要注意的是,如果你使用了JAVA9,打开JD-GUI时可能会出现问题,解决方法是修改JD-GUI.app/Contents/Info.plist,找到

1
2
<key>VMOptions</key>
<string>-Xms512m</string>

改为

1
2
<key>VMOptions</key>
<string>-Xms512m --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED</string>

即可正常启动。
通过看java源码对比smali文件,修改后回编译就ok了!


参考文章:
MAC安装JDK及环境变量配置
MAC上反编译android apk—apktool, dex2jar, jd-jui安装使用(含手动签名)
apk反编译获取完整源码 及 apk反编译后的处理
Java 9 Compatibility

🍭支持一根棒棒糖!
0%