一.生成dex文件 我们可以通过java文件来生成一个简单的dex文件 编译过程: 首先编写java代码如下: (1) 编译成 java class 文件 执行命令 : javac Hello.java 编译完成后 ,目录下生成 Hello.class 文件 (2) 编译成 dex 文件 dx --dex --output=Hello.dex Hello.class 编译正常会生成 Hello.dex 文件 00 34指明jdk版本,这个原因是jdk版本过高了,我们得使用1.6版本的JDK来进行编译 这个时候我们可以指明编译指定版本的来进行编译class文件 javac -source 1.6 -target 1.6 Hello.java (3). 使用 ADB 运行测试 测试命令和输出结果如下 : adb push Hello.dex /mnt/sdcard/ adb shell dalvikvm -cp /mnt/sdcard/Hello.dex Hello 第一次运行会在data/dalvik-cache目录生成一个odex的文件 有些加固没有考虑这个文件,dex的加固直接就废掉了 直接把这个文件拖到ida是可以分析的,拖到jeb就显示未知的文件格式 我们使用winhex查看,发现前面多了一些内容 把这些内容剪切掉,在用jeb分析,就成功解析出来了 二.dalvik文件文档 文档目录 android2.3.7/dalvik/docs/dex-format.html 相关源码目录: android2.3.7\dalvik\libdex android2.3.7\dalvik\libdex\DexFile.c dexFileParse 做主要的解析工作 需要注意的是每个Android源码版本的路径可能不一样,dex文件的格式也可能会有细微的变化,请参考相关平台的源码 用source insight来进行源码分析 分析可以使用010Editor脚本进行分析 三.dex文件格式 整体格式概要 Android dex文件格式样例 文件格式相互之间的联系 |
|
来自: wenxuefeng360 > 《待分类1》