Mac反编译apk程序

本教程以macOS 10.13为例

准备工作:

1.在ORACLE官网下载最新的JDK:

前往ORACLE官网,在底部找到Download Java for Developers,在打开的页面中找到JDK,选择Download,下载对应的版本

2.配置JDK:

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

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对应的目录。修改完成后,重启或使用

source ~/.bash_profile

使环境变量生效。

3.下载apk反编译组件:

Apktool https://ibotpeaches.github.io/Apktool/install/

JD-GUI http://jd.benow.ca/

dex2jar https://github.com/pxb1988/dex2jar

4.运行Apktool

按照官网上的教程,将shell脚本和apktool.jar移动到/usr/local/bin后,在终端执行apktool -h,如果能正确显示帮助,则安装正常。

将需要反编译的apk文件(例如example.apk)放入任意目录中,cd进入该目录,执行

apktool d example.apk

即可进行反编译,这是会生成一个名为example的目录。如果要回编译,执行

apktool b example

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

5.用dex2jar将apk转成jar文件

进入dex2jar文件夹,将dex2jar里的d2j_invoke.sh和d2j-dex2jar.sh增加可执行权限。然后在这个文件夹下运行:

./d2j-dex2jar.sh PATH-TO/example.apk

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

6. 查看源代码

打开JD-GUI,将example-dex2jar.jar拖进去就看到源码了。

请注意,如果使用了JAVA9,打开JD-GUI.app时会出现问题,解决方法是:

打开JD-GUI.app/Contents/Info.plist,找到

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

修改为

<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了!

参考文章:

http://blog.csdn.net/vvv_110/article/details/72897142

http://blog.csdn.net/yanzi1225627/article/details/48215549

http://blog.csdn.net/wh_19910525/article/details/7915738/

https://github.com/java-decompiler/jd-gui/issues/187

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code