最近在研究逆向工程,感觉安卓(apk)的反编译还是比较简单的,在这里记录一下,也算是一个简单的教程吧。这里是需要的文件:安卓反编译工具(Mac)下载。
第一步,准备工作。下载上面的文件,完成后解压,将apktool目录下的三个文件(aapt、apktool、apktool.jar)复制到/usr/local/bin目录下,这样就已经配置好环境变量了,在终端中使用 apktool 命令查看是否成功,这里用的是目前最新的2.1.1版,如下图。
第二步,反编译资源文件。任意下载一个安卓App(这里以meilijia.apk为例),记住下载路径,在终端中,用cd命令进到这个apk文件的目录下,再执行apktool d meilijia.apk命令,如下图。
执行成功后,会在当前目录下生成一个meilijia文件夹,点进去就可以看到相关apk的资源文件了,选中AndroidManifest.xml,然后空格键,就可以预览反编译后的内容了,如下图。
第三步,反编译java 源文件。这里要用到dex2jar和jd-gui,将meilijia.apk重命名改成meilijia.zip,然后使用解压缩软件解压,得到一个meilijia-1目录(因为当前目录已经存在meilijia目录了,这个无关紧要),拿到里面的classes.dex文件,将这个文件复制到dex2jar-2.0目录下,如下图。
同样,使用cd命令进入dex2jar-2.0目录,执行sh d2j-dex2jar.sh classes.dex命令,成功后会在当前目录下生成一个classes_dex2jar.jar文件,如下图。
最后,用jd-gui工具打开这个jar包就可以看到java源代码了,如下图。
如果在第三步执行sh d2j-dex2jar.sh classes.dex命令时提示类似“d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied”的错误,可以执行sudo chmod +x d2j_invoke.sh命令来增加可执行权限。
如果上面的文件链接不可用,这里附上备份地址:安卓反编译工具(Mac)下载。
至此,全部步骤结束。另外,在Windows上反编译apk比较简单,这里推荐一个很强大的工具:ApkIDE。