本帖最后由 坤儿 于 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文件.
这样初步获得了应用中图片的资源,然下载 dex2jar(http://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,你会发现一切正常了。
反编译只应用于学习知识,了解技术,根本目的应是促进技术提升。希望读者不要抱着不好的心态去反编译,这样是对开发者的不尊重。
|
|