安卓学习总结之反编译

        前两天,有一个项目似乎出了点bug,把项目发到了我们这边,是最初版本的代码,后来给了个apk,于是莫名其妙的开始了反编译之旅,其中遇到了很多问题,总结一下。

当然,当时的我是不会反编译的,但作为一名优秀的CV工程师,百度会的我就会。

必备工具

dex2jar 这个工具用于将dex文件转换成jar文件 
下载地址:http://sourceforge.net/projects/dex2jar/files/

jd-gui 这个工具用于将jar文件转换成java代码 
下载地址:http://jd.benow.ca/

apktool 这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源。 
下载地址:http://ibotpeaches.github.io/Apktool/install/

我就抄几行网址不过粪吧,从郭大神博客抄的,我试过了,链接都可以用。

当然这几个东西的使用是及其简单的,解压的时候最好放在一个目录下(目录名最好没有中文),前车之鉴。

其中jd-gui最好下下面那个,不要问我为什么, 

                                    

我下了上面那个,就出现了下面的情况。

                                                     

走了歪路,安装不了,百度一下解决方案,我信你个鬼,弄了两个小时的注册表,还骗我去重装jdk,还好我懒,躲过一劫,后来我尝试找了一下可以用的版本,Emmm,就是前面说的那个了。

好,言归正转。

反编译代码

第一步 解压Apk

       见apk文件解压到合适的目录下,如果不能直接解压,就将它重命名为zip格式再干一次。

第二步  使用dex2jar 工具用于将Classes.dex文件转换成jar文件 

                                     

找到它,一打开压缩包就看的到了。然后把它放到我们的dex2jar的工具包里。

d2j-dex2jar.bat 它的名字你领悟到了么? dex  to  jar  还是个bat文件。所以我们用cmd 跳到这个文件夹来然后使用如下命令

我们就可以在当前目录活动classes-dex2jar.jar文件一个。

d2j-dex2jar classes.dex

为了防止你们像我一样去百度cmd命令,我友情告诉你们会用到的几个命令,用Tab可以自动补全。

cd/   到文件根目录
D:    切换到对应盘(在根目录下才可以切换盘)
cd D:\ssss\dex2jar-2.0   跳转到对应目录   

第三步 用jd-Gui 打开 classes-dex2jar.jar文件 查看代码

  有几个小东西要告诉大家,如R.id.btn_sss 这种会变成其实际的常量值,我们可以在R类中去对应的搜索,一般没有加密,混淆的,是很容易得到代码的,有些是自动生成类,需要自己把他识别开。

                                            

反编译资源文件

正常来讲,直接解压apk出来的res文件,是会乱码的,所以需要反编译

只要有如上两个工具,和一个apk文件,cmd进入到当前目录。使用如下命令

apktool d asdsdfd.apk

ojbk,就是这么简单。目录中会多出来一个文件夹,里面的xml文件什么的就不会乱码了。

End

哎,我是用了不知道多少次Ctrl C 和 Ctrl V ,把代码生生的搬出来了,我们不生产代码,我们只是代码的搬运工。

其中自己部署代码的时候,出现了很多问题,也解决了很多问题,问题就是最好的老师。

猜你喜欢

转载自blog.csdn.net/qq_40687864/article/details/84632981