资源结构详解讲述.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
资源结构详解讲述

PE之资源文件结构详解由DOS头结构0X3C 地值指向PE头地址由图知PE头地址为0X200由PE头地址 + 0x88 定位到数据目录表的第三项资源项IMAGE_DIRECTORY_ENTRY_RESOURCE该结构包含8个字节前四个字节存储资源的RVA 0x282000 后四个字节存储资源的SIZE 0x34c00查看文件节表知道资源位于.rsrc块中由此计算出文件偏移 = 0x212600 + (0x282000 – 0x282000)= 0x212600跳转带资源块中资源目录结构中的每一个节点都是由 IMAGE_RESOURCE_DIRECTORY结构和紧随其后的数个IMAGE_RESOURCE_DIRECTORT_ENTRY结构组成这两种结构组成一个目录块一般为三层:第一层资源类型,第二层是资源名,第三层是资源代码页资源目录结构(16个字节,4个字段)typedef struct _IMAGE_RESOURCE_DIRECTORY { DWORD Characteristics; // 理论上是资源的属性标志,但是通常为0 DWORD TimeDateStamp; //资源建立的时间 WORD MajorVersion; //主版本 WORD MinorVersion; //次版本 WORD NumberOfNamedEntries; //使用名字的资源条目的个数 WORD NumberOfIdEntries; //使用ID数字资源条目的个数// IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;NumberOfNamedEntries(以字符串命名的资源数量) 和NumberOfIdEntries(以整型数字来命名的资源数量)两个字段说明了本目录中目录项的数量,两者加起来即为后面紧跟的IMAGE_RESOURCE_DIRECTORY_ENTRY的数目资源目录入口结构(8个字节,2个字段)紧跟着资源目录结构后的就是资源目录入口结构,此结构长度为8个字节typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { union { struct { DWORD NameOffset:31; DWORD NameIsString:1; }; DWORD Name; //目录项的名字字符串指针或ID WORD Id; }; union { DWORD OffsetToData; //资源数据偏移地址或子目录偏移地址 struct { DWORD OffsetToDirectory:31; DWORD DataIsDirectory:1; }; };} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;(1).Name字段:定义目录项的名字或者ID 作为指针时:该指针是从资源区块开始地方算起的偏移量当结构用于第一层目录时,定义的是资源类型当结构用于第二层目录时,定义的是资源的名称当结构用于第三层目录时,定义的是代码页编号当最高位位0,作为ID使用,范围0-16之间,表示系统预定义的类型0x01 : 光标 0x05 : 对话框0x09 : 加速键0x0E : 图标组0x02 : 位图 0x06 :字符串 0x0A : 未格式资源0x10 : 版本信息0x03 : 图标 0x07 : 字体目录0x0B : 消息表0x04 : 菜单 0x08 : 字头 0x0C : 光标组当最高位为1时,字段的低位作为指针使用,资源名称字符串是使用的UNICODE编码,这个指针并不指向字符串,而是指向一个IMAGE_RESOURCE_DIR_STRING_U结构typedef struct _IMAGE_RESOURCE_DIR_STRING_U { WORD Length; //字符串的长度 WCHAR NameString[ 1 ]; //UNICODE字符串,字对其的,长度可变} IMAGE_RESOURCE_DIR_

文档评论(0)

jiayou10 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档