您的位置:首页 > 移动开发 > Android开发

How to decompile apk(反编译android apk)

2014-08-28 21:49 239 查看
作为一个开发者,在起步的时候,最重要的就是去模仿别人的优秀的程序。最近开始涉猎android,所以便对阅读别人开发的优秀的android程序相当感兴趣,便开始着手去研究怎么去反编译android app。其实对于这个东西,网上的教程是一堆堆,不过还是有些地方不是很一样,有时候会使人相当迷惑。不过,在经过自己的实践后,我也发现了该怎么样在自己的机子上反编译android
app。

首先是工具的下载:

1.dex2jar:可以将apk解压后的classes.dex转化为jar

2.jd-gui:可是将jar转换为java代码直接阅读

3.apktool和apktool-install-windows:解决apk解压后xml文件乱码的问题

然后就是步骤了:

1.解压三个软件

2.将apktool的路径添加到环境变量中的系统变量Path中,不然后面用到apktool时相当麻烦,要在cmd中先转到apktool所在目录中

3. 就是反编译了,分为对classes.dex的反编译和对xml文件的反编译

a.对classes.dex的反编译用到了dex2jar,首先将apk文件后缀名改为zip,然后解压,将classes.dex文件复制到dex2jar解压后所在文件夹下,和dex2jar.bat在同一个目录下。然后就将classes.dex文件拖拽到dex2jar.bat图标中。其实网上绝大部分的教程在这一步中都是要在cmd中操作的。。。不过我有点懒。。。不过结果也是一样的,都会在同一个文件夹下产生一个.jar文件,这个就是我们所需要的东西了。然后我们就可以在jd-gui中打开这个jar,直接看源码,关于jd-gui的操作,我在解压jd-gui后得到的文件夹下发现一个readme.txt,里面很详尽地描述了在jd-gui中打开文件的三种方法,不过,是用英文写的,这里我只介绍一种最简单的方法,就是把jar文件拖拽到jd-gui图标中。嘿嘿,世界的进步是由懒人推动的。。。

b.对xml文件的反编译,对xml文件的反编译需要用到apktool,首先,把apktool-install-windows解压后得到的文件夹中的内容复制到apktool解压后得到的文件夹中,然后还得把apk复制到apktool.bat所在文件夹下。然后就是解压了,这个不能把apk文件直接拖拽到apktool.bat中,我试过了,没有用,所以只得乖乖地在cmd中执行操作,cd跳到apktool.bat所在文件夹,
然后敲入apktool d xxx.apk,然后静等,然后得到一个解压后的文件,里面的xml就都是我们需要的东西了,不再是乱码。

yeah,到此我们的反编译就告一段落了。

最后,补充说明一点东西,一个是反编译classes.dex后得到的文件还不是尽如人意,一方面是里面我们习惯在代码中敲R.xx.xx获得资源,反编译后我们会看到在那个地方只会显示一串数字,不过这个数字我们可以在原先R文件那个位置找到对应的东西。另一方面,就是现在很多app都用混淆器混淆代码,我们反编译后得到的东西,比如类名什么的很多都是a,b,c这些我们无从下手的东西。我在网上找了一下,发现只有教怎么使用混淆器的,没有教怎么反混淆的,唉,有时间翻墙google一下,看看国外的牛人有没有办法解决。此外,在使用cmd的时候,我自己当初试的时候还是遇到很多问题的,比如就是转到相应的目录下,用cd这个命令,不知道怎么回事,我的机子上居然要先转到相对应的盘中,然后才可以接着向下转,下面是我在cmd中敲的代码,首先是F:,然后转到F盘后再用cd
xx\xx\xx...,tips:dir可以查看当前文件夹中所有内容,cd是跳转到相应目录。嗯,在结尾处还是要感谢网上各种大神贴的方法,由于我借鉴了很多位大神的方法,自己也忘了有谁,出自哪些地方,再此一并谢过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: