相信大家在安装使用了一个apk后,看到一些好的效果或实现,一般会很想知道这个是如何实现的。还好,android选的是java开发语言,所以经过一些小步骤,而作者又没有用混淆的话,差不多可以返原70 ~ 90 的java实现,下面我就来说下Android apk 的反编译步骤:
  1. 解压缩apk包:将apk文件的后缀改名为.zip,然后对zip文件进行解压。
  2. 反编译dex文件:解压apk文件后,你会发现res目录的图片没有加密,但java源码编译成了一个classes.dex文件,无法用普通的反编译class文件的方法来处理。下载一个软件可以将dex文件转换成普通的jar包,这个软件名字叫:dex2jar(这个工具好象还是国人开发的 ~_~),去这个网站http://code.google.com/p/dex2jar/downloads/list下载最新版并解压到一个目录,并将这个目录加到系统PATH变量中,如:D:\study—software\dex2jar-0.0.7-SNAPSHOT\lib;就可以直接用: dex2jar.bat 或 dex2jar.sh 转换dex文件了,将classes.dex文件拷贝到与dex2jar.bat相同的目录下
  3. 命令如下:dex2jar.bat classes.dex,将在同目录得到普通jar包:classes.dex.dex2jar.jar,就可以用处理普通jar包的方法来反编译这个jar包;
  4. 反编译jar包:得到jar包后,下载自已喜欢的反编译工具。我推荐大家用JD-GUI (http://java.decompiler.free.fr/?q=jdgui),有比较简单的图形界面,可以反编译单个class文件,也可以反编译jar包,比较方便;
  5. 反编译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,你会发现一切正常!

更多相关文章

  1. Android多媒体--访问网络上的Audio对应的M3U文件,实现网络音频流
  2. 文件操作二
  3. Android使用Itext生成pdf文件
  4. android下创建文件夹和修改其权限的方法
  5. Android 将少量的数据文件保存在 data/data 目录下
  6. Android编译系统中头文件搜索路径的顺序问题
  7. Android 如何利用proc有上层想kernel写文件
  8. 仿微信、短信、QQ等消息数目右上角红色小圆球气泡显示(基于Androi
  9. Android运行时ART加载OAT文件的过程分析

随机推荐

  1. 获取组件坐标系
  2. Android ContentProvider原理分析
  3. BroadcastReceiver开机启动Service,并在se
  4. Android AES加密 ecb模式加密
  5. Android(安卓)EditText限制输入长度
  6. 配置Android Annotations
  7. 解决Android library project cannot be
  8. 模仿android谷歌地图功能开发记录
  9. Android利用CountDownTimer类实现倒计时
  10. android各版本的兼容问题