欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]分析一个简单的 .dex 文件 —— Hello.dex

[原创]分析一个简单的 .dex 文件 —— Hello.dex

最近在学习dex的文件格式,阅读非虫大大的《Android软件安全与逆向分析》里dex的章节内容,其实信息量蛮大的。读过一遍后,觉得对dex的文件格式的学习还少点什么。下一章odex内容看了几行后,这种不安全的感觉愈发变得强烈起来,会想起“空中楼阁”的寓言。决定自己写一个可执行的小程序,编译成.dex格式,分析过一遍后再往下进行书的内容。觉得这东西总归是基础功,属于必须熟悉的那一类。
分析的过程尽量不去翻书 ,尽量模拟原生的分析过程 。一些结构的定义 ,多有参考 Android Open Source Project 上的在线文档 。
参考的官网文档 :
Dalvik Executable Format
一方面反刍已经学到的东西,一方面把分析的过程里记录的东西整理出来。感觉信息量巨大,不记录下来用脑袋肯定记忆不住。最初看书的时候是用笔在纸上写写画画的,后来借助了office表格做标记,所以也有些图表出来。
****************edited 2014.02.20 ********************
结束的时候,把文字、代码和表格 ,所有东西整理出来以后,发现有 19 页纸张的大小 。若发帖子的话 ,长度肯定会比李咏的脸都长,这发帖后怎么阅读啊。最后决定整理成文档做附件。.dex 格式的数据结构和描述知识 Android Open Source Project 都公开出来了,分析思路非虫大大书里面描述的也很详细,没有新添加的东西。按照自己对 .dex 格式和官方对应文档的理解,推理汇整了一下,作为学习.dex格式的一个小结。
文档的目录如下 :
第一部分:创造一个可供分析的Hello.dex       

    1. 测试环境
    2. java 源码和编译方法
    3. 使用 ADB 运行测试
    4. 重要说明

第二部分:分析过程       
1.dex整个文件的布局
2. header       
3. string_ids       
4. type_ids       
5.  proto_ids       
6. field_ids
7. method_ids
8. class_defs       
    8.1 class_def_item       
    8.2 class_def_item --> class_data_item       
    8.3 class_def_item --> class_data_item --> code_item       
    8.4 分析 main method 的执行代码并与 smali 反编译的结果比较

上传的附件 Hello.dex.rar
实例分析dex 文件格式-20140323.pdf

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功