本教程以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