Android常用技巧:反编译apk

为什么要反编译apk呢?当然是用来借鉴别人的软件结构、资源文件等。道理你我都懂,还是直接实战操作。

技术日新月异,工具自然也会更新。在参考多篇反编译教程后,发现一部分文章已经相当落后,原理虽然都一样,但是已经不具备参考性。因此,在阅读过部分工具官网操作指南后,整理如下。

操作平台:Windows 10

Java工具包:JDK 1.7

apk样本:蜻蜓FM安卓客户端

一、首先下载下列三种工具

1、apktool(包含apktool.jar & apktool.bat)

强大的反编译工具。

轻松反编译apk,解析出资源文件、xml文件,生成smali文件,还可以把修改后的文件重新打包生成apk。

支持windows,linux,mac。

下载地址:http://ibotpeaches.github.io/Apktool/

2、dex2jar

将apk中的dex文件转换为jar文件,很多人不会看smali文件,还是看java类文件比较舒服。

支持windows,linux,mac。

下载地址:https://github.com/pxb1988/dex2jar

3、jd-gui

查看jar文件,基本上对class文件一览无余。

支持windows,linux,mac。

下载地址:http://jd.benow.ca/

4、下载文件后,全部放在一起,比如D盘根目录。

5、将两个压缩包解压。

二、使用apktool反编译

1、以windows为例,进入DOS界面,切换到D盘,输入如下命令:

2、开始反编译中,直至结束。

3、进入D盘,可看到qingting.fm.5.0.8(guanwang)文件夹。

4、这时,我们便可以查看资源文件和XML文件了。

三、使用dex2jar转换dex文件

1、其实使用apktool反编译出来的文件,基本就可以查看源码了。但是很多人不会看smali文件(包括我自己),所以有必要从apk中提取出Java源码。

2、apk文件其实是一个压缩包,所以首先解压apk文件。这里推荐Bandizip(下载地址:http://www.bandisoft.com/bandizip/cn/),好用,免费。

3、把classes.dex放入dex2jar文件夹中。

3、再次进入DOS界面,切换到dex2jar文件夹,输入如下命令:

4、这时可看到dex2jar文件夹多出来一个jar文件。

四、使用jd-gui查看jar文件

1、这是jd-gui文件夹。

2、打开classes-dex2jar.jar即可。

3、这就是著名的“蜻蜓FM事件”代码了。

4、反编译到这里基本就可以了,有时候也不能保证获取到全部的源代码,毕竟优秀的开发者或者厂商还是会有防止反编译措施的。

已有4条评论 发表评论

  1. Zeson /

    可以啊!

  2. 章鱼姐姐 /

    翻墙教程什么时候有。。。(还有这里评论不能发表情我表示很无奈)

    1. Robert / 本文作者

      你可以用文字呀,比如:[黑人问号],我就自动脑补了

      1. 章鱼姐姐 /

        然而我并没有如此神奇的能力呀~~~

发表评论