android classes.dex 反编译

Step 1 获取classes.dex

将apk的后缀修改为zip,解压缩后会生成如下两个文件夹和三个文件
     android classes.dex 反编译
android classes.dex 反编译
 
      META-INF                                    
      res                               res文件夹下包含图片,音频,字库等资源,及处理后的布局文件,暂时按下稍后会有文章介绍解决方法
      AndroidManifest.xml      打开AndroidManifest.xml会发现是乱码,暂时按下稍后会有文章介绍解决方法
      classes.dex                   这个文件就是我们的目标,classes.dex是java源码编译后生成的java字节码文件.但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样.
      resources.arsc               文本资源管理,有专门的工具(ArscEditor)可以进行处理

 
Step 2 从classes.dex转制成jar文件
 
首先下载工具dex2jar 下载地址为 http://code.google.com/p/dex2jar/downloads/list 这个工具可以将classes.dex文件转换成jar文件。
接压缩之后在命令行里,指定到解压缩的目录,运行如下脚本

android classes.dex 反编译
 
android classes.dex 反编译
就会在你的dex2jar目录下生成classes-dex2jar.jar文件

 
Step 3 使用jd-gui获取java代码
jd-gui是一个java反编译软件可以从 http://java.decompiler.free.fr/?q=jdgui 下载
打开jd-gui 读取刚刚生成的classes-dex2jar.jar,点击Save All Sources生成源代码的zip包。

 
这种方式反编译安卓代码,有这么几个问题
  1. 大部分代码都会经过混淆处理,代码阅读性差
  2. jd-gui在解释switch case时候会出现逻辑错误

相关推荐