天天看点

Mac环境安卓反编译环境搭建:反编译Apk实战

安卓反编译技术大家一定不会陌生,这也是我们开发的时候知道安卓使用Progrund混淆之后,可能会引发很多异常信息、包括友盟统计无法统计到有效的崩溃的日志信息,需要上传混淆上传的mapping文件才能正常查看。这一系列复杂的问题也不能阻挡我们混淆代码,因为不混淆代码。别人拿到你的Apk文件之后,反编译拿到你的源码,那么你的项目就相当与开源了。如果你的项目里面已经配置了签名文件,这就相当于别人可以替你上传项目到应用市场,替代你的项目产品了,这是非常可拍的。

下面我们就先集成反编译环境:比较好的文章

其中最新下载的就是apktool,这个工具在Mac环境需要按照官网提供的安装步骤,都是英文的,可以用Google翻译一下,如下图:

Mac环境安卓反编译环境搭建:反编译Apk实战

这里第一步需要你点击进去,直接右键–》另存为一个apktool文件,然后下面的步骤一步步往下走就行。

把两个文件复制到/usr/local/bin目录下之后,执行如下命令:

5)保证这两个文件是可读写的:

cd  /usr/local/bin/

sudo chmod a+x apktool

sudo chmod a+x apktool.jar

6)验证

apktool -v
           

如果出现下图:

Mac环境安卓反编译环境搭建:反编译Apk实战

说明你已经安装apktool工具成功,如果提示commend not fund 问题,

/usr/local/bin/apktool: line 1: #!/斌/庆典: No such file or directory /usr/local/bin/apktool: line 2: #: command not found /usr/local/bin/apktool: line 4: #: command not found /usr/local/bin/apktool: line 5: #根据Apache许可证2.0版(“许可证”)获得许

说明你第一步操作存在问题,建议还是按照官网的建议右键保存为apktool文件,然后按照步骤执行。

apktool d -f /Users/guotianhui/Desktop/0.apk  -o /Users/guotianhui/Desktop/apkfile
           

看命令也知道,第一个参数就是你要反编译的Apk文件的绝对地址,第二个参数就是你反编译文件的输入路径。

最后得到的文件目录如下:

Mac环境安卓反编译环境搭建:反编译Apk实战

这里我们就完成了反编译的第一步,获取到所有的资源文件,但是我如果想进一步的看看源代码怎么办呢?

dex2jar 使用

我们现在把 apk 当成一个压缩包解压开来,里面有个 .dex 文件。dex2jar 能把 .dex 文件转化成 .jar 文件

  1. 将 apk 中 .dex 文件移动到我们刚刚解压 dex2jar 安装的目录下
  2. 终端输入 sh d2j-dex2jar.sh classes.dex

这时我们会在目录中看到有个 .jar 文件。

运行 sh d2j-dex2jar.sh classes.dex 如果出现了 Permission denied

只需要终端中运行 chmod +x d2j_invoke.sh 即可

jd-gui 使用

直接打开我们安装的 JD_GUI.app ,将 .jar 文件拖入应用上,我们即可看到 java 代码了。

dex2jar遇到的问题:

Mac环境安卓反编译环境搭建:反编译Apk实战

虽然提示出错饿了,但是依然会生成jar文件,直接拖到gui依然可以看的。

继续阅读