反编译apk对于一个android开发者老说还是很有必要的,尽管窃取别人的东西不是什么光彩的事情,但从技术层面来讲应该是每一个android开发者所必须掌握的技能,下面就来说说如何反编译一个apk。
所需工具:
1、dex2jar(负责反编译java代码)
2、jd-gui.jar(负责奖dex2jar翻边出来的jar包转为java代码)
3、apktool(负责反编译资源文件)
以上工具的下载链接:http://download.csdn.net/detail/u010948188/9435261
反编译java代码
为了尊重别人的劳动成果就不随便拿别人的apk做测试了,自己随便找了一个之前自己的demo的apk,命名为
test.apk。
将以上下载的工具包解压会看见
将以上下载的工具包解压会看见
解压dex2jar
再将我们之前的apk解压缩会看到“classes.dex”文件,将其复制到刚才dex2jar解压后的文件夹中,打开cmd到dex2jar
执行 “d2j-dex2jar classes.dex” 命令,如图:
再次打开该文件夹会发现多了一个“classes-dex2jar.jar”文件,这算是第一步完成了,
这时需要用到第二个工具:jd-gui.jar,直接双击打开选择之前生成的jar就可以看到java内容了,
到上面已经将java代码全部反编译结束了,下面开始反编译资源文件
反编译资源文件
打开刚才解压apk出来的文件夹,有人会发现已经有res文件夹了,里面的资源也都有,要是你觉得就这样就ok了那就打错特错了,不信打开某个xml文件看看,一定是乱码,这并不奇怪,其实在我们打包apk的时候对这些资源都是经过编译的,既然直接打开不行的话那怎么办呢,这是就需要用到我们第三个工具:apktool将我们要反编译的apk(test.apk)放到apktool文件夹,同样cmd到该文件夹目录, 执行:apktool d test.apk
此时你打开apktool的文件夹会发现多了一个名为“test”的文件夹,这是打开里面的文件看看发现已经不是乱码了,这正是我们想要的。
好了到这一步算是整个apk的反编译流程结束了。