apk反编译

早上看了篇文章,[android反编译小结],原来apk这么容易就被破解了。顺便记录一下自己的使用过程。

【摘自原文】首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,类似Sun JavaMe的Jar压缩格式一样,区别是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中去,作为托管代码既然虚拟机可以识别,所以就可以很轻松的反编译。

【摘自原文】搞过几天android的朋友都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.dex文件中得到.class,利用后者再得到大家垂涎已久的java文件。

 

下面是我自己的使用过程:

1、安装jdk(我的是1.6.0_14)

2、下载apktool1.4.1.tar.bz2apktool-install-windows-r04-brut1.tar.bz2目前最新版本)(原始地址:http://code.google.com/p/android-apktool/downloads/list

3、用winrar解压下载的tar.bz2文件,到指定目录(这个随意放置,我放的是D:\tools下)得到:apktool.jar、aapt.exe、apktool.bat

4、使用cmd,进入D:\tools,将需要反编译的apk文件拷贝过来(当然也可以用绝对路径访问指定apk文件),执行命令:

  apktool.bat d xxx.apk

  此时会在tools目录下生成一个与apk名称相同的子文件件:xxx,里面res以及AndroidManifest.xml就是在Eclipse工程下对应的文件。

 到目前为止,还不能看到工程的源文件,也就是我们熟悉的java文件,要想看到源程序,需要借助:dex2jar.bat(从dex到class)和jd-gui(class到java),当然还有其他工具([android反编译小结]这里面有介绍)

 

下面继续查看源程序:

5、下载dex2jar-0.0.7.10-SNAPSHOT.zip并解压(位置随意,我的是D:\Tools下),原始地址:http://code.google.com/p/dex2jar/downloads/list

6、用winrar打开xxx.apk,提取出classes.dex,放到dex2jar目录下(它是java文件编译,再通过dx工具打包成的),执行命令(当然也可以不放在一起,使用绝对路径访问)

  dex2jar.bat classes.dex

  此时会生成classes.dex.dex2jar.jar(源程序就在这里面了,^_^)

7、下载JD-GUI(这个工具百度一下,到处都有,绿色的,直接解压就可以了,我下的是jd-gui-0.3.3)并解压,会有个:jd-gui.exe

8、运行jd-gui.exe,打开刚刚反编译的文件:classes.dex.dex2jar.jar,就有看到我们熟悉的java文件了。

 

我用自己写的一下工程,反编译了一下,自己代码的部分基本上完全相同,只不过资源文件都被id值替代了,学习代码就够了。

 

其实方法还有很多,我也试过其他方法,大家自己学习吧,网络太强大了。。。。。。

posted on 2011-06-12 14:06  人间爱  阅读(1447)  评论(0编辑  收藏  举报

导航