- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Androi应用逆向分析技术综述
Android应用逆向分析技术综述
Dex文件结构
HYPERLINK /banketree/article/detailsAndroid 程序静态分析
Dex文件结构
1. 文件头
DEX文件头主要包括校验和以及其他结构的偏移地址和长度信息。
字段名称
偏移值
长度
描述
magic
0x0
8
Magic值,即魔数字段,格式如”dex/n035/0”,其中的035表示结构的版本。
checksum
0x8
4
校验码。
signature
0xC
20
SHA-1签名。
file_size
0x20
4
Dex文件的总长度。
header_size
0x24
4
文件头长度,009版本=0x5C,035版本=0x70。
endian_tag
0x28
4
标识字节顺序的常量,根据这个常量可以判断文件是否交换了字节顺序,缺省情况下=0
link_size
0x2C
4
连接段的大小,如果为0就表示是静态连接。
link_off
0x30
4
连接段的开始位置,从本文件头开始算起。如果连接段的大小为0,这里也是0。
map_off
0x34
4
map数据基地址。
string_ids_size
0x38
4
字符串列表的字符串个数。
string_ids_off
0x3C
4
字符串列表表基地址。
type_ids_size
0x40
4
类型列表里类型个数。
type_ids_off
0x44
4
类型列表基地址。
proto_ids_size
0x48
4
原型列表里原型个数。
proto_ids_off
0x4C
4
原型列表基地址。
field_ids_size
0x50
4
字段列表里字段个数。
field_ids_off
0x54
4
字段列表基地址。
method_ids_size
0x58
4
方法列表里方法个数。
method_ids_off
0x5C
4
方法列表基地址。
class_defs_size
0x60
4
类定义类表中类的个数。
class_defs_off
0x64
4
类定义列表基地址。
data_size
0x68
4
数据段的大小,必须以4字节对齐。
data_off
0x6C
4
数据段基地址
2. 魔数字段
魔数字段,主要就是Dex文件的标识符,它占用4个字节,在目前的源码里是 “dex\n”,它的作用主要是用来标识dex文件的,比如有一个文件也以dex为后缀名,仅此并不会被认为是Davlik虚拟机运行的文件,还要判断这 四个字节。另外Davlik虚拟机也有优化的Dex,也是通过个字段来区分的,当它是优化的Dex文件时,它的值就变成”dey\n”了。根据这四个字 节,就可以识别不同类型的Dex文件了。
3. 检验码字段
主要用来检查从这个字段开始到文件结尾,这段数据是否完整,有没有人修改过,或者传送过程中是否有出错等等。通常用来检查数据是否完整的算法,有 CRC32、有SHA128等,但这里采用并不是这两类,而采用一个比较特别的算法,叫做adler32,这是在开源zlib里常用的算法,用来检查文件 是否完整性。该算法由MarkAdler发明,其可靠程度跟CRC32差不多,不过还是弱一点点,但它有一个很好的优点,就是使用软件来计算检验码时比较 CRC32要快很多。可见Android系统,就算法上就已经为移动设备进行优化了。
SHA-1签名字段
dex文件头里,前面已经有了面有一个4字节的检验字段码了,为什么还会有SHA-1签名字段呢?不是重复了吗?可是仔细考虑一下,这样设计自有道理。因 为dex文件一般都不是很小,简单的应用程序都有几十K,这么多数据使用一个4字节的检验码,重复的机率还是有的,也就是说当文件里的数据修改了,还是很 有可能检验不出来的。这时检验码就失去了作用,需要使用更加强大的检验码,这就是SHA-1。SHA-1校验码有20个字节,比前面的检验码多了16个字 节,几乎不会不同的文件计算出来的检验是一样的。设计两个检验码的目的,就是先使用第一个检验码进行快速检查,这样可以先把简单出错的dex文件丢掉了, 接着再使用第二个复杂的检验码进行复杂计算,验证文件是否完整,这样确保执行的文件完整和安全。
? ? ? SHA(Secure Hash Algorithm, 安全散列算法)是美国国家安全局设计,美国国家标准与技术研究院发布的一系列密码散列函数。SHA-1看起来和MD5算法很像,也许是Ron Rivest在SHA-1的设计中起了一定的作用。SHA-1的内部比MD5更强,其摘要比MD5的16字节长4个字节,这个算法成功经受了密码分析专家 的攻击,也因而受到密码学界的广泛推崇。这个算法在目前网络上的签名,BT软件里就有大量使
您可能关注的文档
最近下载
- 21CS03-3:一体化预制泵站选用与安装(三).docx VIP
- 2025届高考物理考点一轮复习:功能关系 能量守恒定律(解析版).pdf VIP
- 二年级上册语文教案 第七单元.docx VIP
- 快递业务操作规范与流程.pdf VIP
- 用在线乳化技术实现柴油机低温燃烧的研究 the experimental study of online emulsification technology in realizing diesel low- temperature combustion.pdf VIP
- 课桌椅项目实施方案-(范文模板).docx VIP
- 快递服务行业业务查询处理规范.doc VIP
- PDCA循环工作方法培训.pptx VIP
- 快递业务操作规范及投诉处理.doc VIP
- 充电桩采购安装项目售后服务承诺.docx VIP
文档评论(0)