android classes.dex 反编译
16lz
2021-01-26
Step 1 获取classes.dex
将apk的后缀修改为zip,解压缩后会生成如下两个文件夹和三个文件
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文件。 接压缩之后在命令行里,指定到解压缩的目录,运行如下脚本
就会在你的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包。
这种方式反编译安卓代码,有这么几个问题
将apk的后缀修改为zip,解压缩后会生成如下两个文件夹和三个文件
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文件。 接压缩之后在命令行里,指定到解压缩的目录,运行如下脚本
就会在你的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包。
这种方式反编译安卓代码,有这么几个问题
- 大部分代码都会经过混淆处理,代码阅读性差
- jd-gui在解释switch case时候会出现逻辑错误
更多相关文章
- android数据保存
- 使用gradle来编译生成apk
- ActionBarSherlock的使用一
- Chronometer
- Android(安卓)Studio插件GenerateFindViewById
- 数据存储之SharedPreferences存储——第一行代码Android学习笔记
- Android手势滑动实现ImageView缩放图片大小
- android 中ids.xml资源的使用
- android 中断点续传理解