黑马程序员技术交流社区

标题: 黑马程序员-android反编译 [打印本页]

作者: 坤儿    时间: 2014-6-29 09:38
标题: 黑马程序员-android反编译
本帖最后由 坤儿 于 2014-6-29 09:38 编辑

现在安卓市场发展如火如荼,作为开发者看到一些应用中比较好的效果或实现,一般会很想知道这个是如何编写的。由于Android选的是JAVA开发语言,这样通过一些软件,如果作者没有刻意加密的话,差不多可以反编译出90%的代码。
下面我就来说下安卓APK文件的反编译步骤:

     
1.解压APK文件
       apk文件说到底其实就是 ".zip"文件,你可以用winRAR直接解压,从而得到一个文件夹。
2.反编译dex文件
       解压apk文件后,你会发现:
(1) assets文件夹,其中的图片是可以直接浏览的。
(2) res文件夹,其中存放应用的logo图标也是可以直接浏览的。
(3) classes.dex,这个就是存放主要代码的dex文件,JAVA打包编译后形成的dex文件.


     这样初步获得了应用中图片的资源,然下载 dex2jarhttp://code.google.com/p/dex2jar/) 这个工具将classes.dex转换成jar包。步骤如下:
(1)解压dex2jar 到指定目录,例如:D:\dex 。
(2)在解压目录中粘贴cmd.exe,这个cmd就是window自带的cmd命令行。
(3)将APK文件中解压出来的classes.dex粘贴到dex2jar的文件夹中,例如:D:\dex
(4)打开cmd.exe软件,输出 dex2jar.bat classes.dex 命令(可以直接复制然后鼠标右键粘贴即可),然后回车。
(5)在解压的目录中,你会发现有一个。jar的文件,这个就是反编译出来的jar包,特别注意lib文件夹下的jar包是软件自带的工具包,并不是你解包生成的jar包。例如:D:\dex\Mario.jar



3.反编译jar包
获得jar包后,下载JD-GUI (http://java.decompiler.free.fr/?q=jdgui )软件,这个软件图形界面比较简单适合观看源码,可以反编译单个class文件,也可以反编译jar包,比较方便,使用JD-GUI 打开 jar包,会出现3-4个文件夹(例如:android.support-4、cn.dome.mo、com),源码文件都在 com 文件夹中,打开con你就会看见作者写的 .java 的文件了。com中不仅有源码文件,还有一些SDK 或者 开发引擎自带的java文件,这个就要读者自己去区分了,这个并不难这里就不赘述了。



4.反编译xml文件

       打开解压的res\layout目录,有很多xml文件,如果你想看下作者是如何设计界面的,你会很失望,因为你看到的是一大堆乱码!这个时候我们需要下载一个jar包来解决这个问题:AXMLPrinter2.jar (http://android4me.googlecode.com/files/AXMLPrinter2.jar),将这个jar包放在任意目录,在确保你已经装了jdk的情况下,运行这个命令可反编译xml文件: java -jar AXMLPrinter2.jar AndroidManifest.xml >AndroidManifest_decode.xml,打开AndroidManifest_decode.xml,你会发现一切正常了。
反编译只应用于学习知识,了解技术,根本目的应是促进技术提升。希望读者不要抱着不好的心态去反编译,这样是对开发者的不尊重。
                                                                                                                                                                                    


作者: 496080891    时间: 2014-6-29 17:05
收藏先,很实用,也很详细,最好能搞下图片问题
作者: 坤儿    时间: 2014-6-29 17:08
496080891 发表于 2014-6-29 17:05
收藏先,很实用,也很详细,最好能搞下图片问题

第一次发贴   请各位见谅   以后一定注意
作者: yhxyzsj    时间: 2014-6-30 09:45
靠破解吃饭暴利是暴利,哪天进局子不说,技术一更新就又要学一大坨东西了
作者: 坤儿    时间: 2014-6-30 10:58
yhxyzsj 发表于 2014-6-30 09:45
靠破解吃饭暴利是暴利,哪天进局子不说,技术一更新就又要学一大坨东西了 ...

技术没有对与错 错的在人
作者: 七弦    时间: 2014-6-30 12:38
嗯嗯  真不错!
作者: 张益达    时间: 2014-6-30 13:18
yhxyzsj 发表于 2014-6-30 09:45
靠破解吃饭暴利是暴利,哪天进局子不说,技术一更新就又要学一大坨东西了 ...

:curse:卧槽 破解怎么了 破解又没错  
作者: 张益达    时间: 2014-6-30 13:19
yhxyzsj 发表于 2014-6-30 09:45
靠破解吃饭暴利是暴利,哪天进局子不说,技术一更新就又要学一大坨东西了 ...

新动西出来的再多 它也得兼容老东西啊  何况 新东西还不稳定愿不愿意使用还是一回事




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2