最近研究到安卓项目的反编译及代码混淆。要想做到代码混淆,首先要先做项目的反编译,这样才能知道别人是怎么从apk看到源码的。
需要三步:
1、下载apktool.jar和apktool,下载路径:
https://ibotpeaches.github.io/Apktool/install/
找到mac版本说明。
Mac OS X:
Download Mac wrapper script (Right click, Save Link As apktool)
Download apktool-2 (find newest here)
Rename downloaded jar to apktool.jar
Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
Make sure both files are executable (chmod +x)
Try running apktool via cli
第一步下载wrapper script文件,右键,另存为。下载到mac后,认准apktool可执行文件。
第二步下载apktool-2jar包。
第三步重命令apktool.jar。
第四步apktool和apktool.jar复制到/usr/local/bin/目录下。
第五步分别chmod +x apktool chmod +x apktool.jar
第六步即可操作apk文件
apktool d -s app-release.apk
然后找到文件夹:app-release
其中:
第二步下载jar网络不太好,翻墙后下载。下载路径
https://bitbucket.org/iBotPeaches/apktool/downloads/
2、下载dex2jar-2.0.zip
https://sourceforge.net/projects/dex2jar/files/
解压后,将classes.dex文件复制到该文件夹下。执行命令:
sh d2j-dex2jar.sh classes.dex
报错:
d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied
解决方法:
sudo chmod +x d2j_invoke.sh
然后在执行上面一步。
然后可以看到多了一个classes-dex2jar.jar文件。
3、下载jd-gui
http://java-decompiler.github.io/
翻墙下载。
然后将第二步拿到的classes-dex2jar.jar拖到jd-gui中即可。就能看到class文件了。