PE格式揭秘.docVIP

  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格式揭秘

这是我在我的电脑上 随便找了个exe文件,下面我将会仔细的分析一下这种文件的格式 下面我依次截图,仔细分析,让你看清楚: 首先 4D 5A 90 这三个一般是在一起的,我们知道 windows文件是从DOS兼容过来的,这三个数其实就是 M Z 和 一个分隔符 是为了兼容以前DOS下的MZ文件 好: 我找了两个文件通过比较发现,从 0x 00 00 00 80处开始不一样, 也就是 在这之前从0x 00 00 00 00到 0x00 00 00 7F是相同的DOS头 和DOS桩程序, 其实,MZ_DOS在PE 文件中占64个字节,就是我们看到的 前4行数据(每行16个字节),而在微软给我们提供的 DOS头结构体中 有各个部分的结构: Typedef struct _IMAGE_DOS_HEADER{ USHORT e_magic; //00H魔术数字 就是0x 4D 5A = MZ; USHORT e_cblp; // 02H 表示的是文件最后页(page)中的 字节数; USHORT e_cb ; / 04H 文件的页数(每页大小4KB); USHORT e_crlc ; //06H重新定向的元素个数; USHORT e_parhdr //08H 头部大小,以段(paragraph)为单位; USHORT e_minalloc //0AH 所需要的最小附加段; USHORT e_maxalloc //0CH 所需要的最大附加段; USHORT e_ss //0EH 初始的ss值; USHORT e_sp //10H 初始的sp值; USHORT e_csum //12H 校验和或者0 USHORT e_ip //14H 初始的IP值 USHORT e_cs //16H 初始的CS值(相对偏移量) USHORT e_lfarlc //18H 重定向表文件地址 USHORT e_ovno //1AH 覆盖号 USHORT e_res[4] 1CH 保留字 USHORT e_oemid //24H OEM标示符(for e_oeminfo) USHORT e_oeminfo //26H OEM信息 USHORT e_res2[10] //28H 保留 LONG e_lfanew; //3CH PE头位置 //这个位置很重要,做病毒要这个东西 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER 上边就是我的一个exe文件的DOS头(不包括DOS桩,紧跟在它的下面),下面是我的分析 0x4D 5A 魔术字符 MZ 0x00 90(144字节) 文件最后一页的字节数 地址为2 0x00 03 文件总页数用这两个计算出文件总大小(3-1)*4028+144=8200 0x00 00 重定向元素个数 0x00 04 头部大小,以段为单位 0x00 00 所需要的最小附加段 0xFF FF 所需要的最大附加段 0x00 00 加载时 ss段寄存器的值 0x00 B8 加载时 sp的值 0x00 00 校验和 或者为0 0x00 00 初始IP值 0x00 00 初始CS值 0x00 40 重定位表文件地址 0x00 00 覆盖号 0x0000 0000 0000 0000保留的四个字 0x00 00 OEM标识 0x00 00 OEM信息 0x0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 保留10个字 0x00 00 00 D0 PE头开始的地址 地址为3C 上边指需要记住两处,但是别的地方最好是也记住。。毕竟越多越好嘛(当然是建立在熟悉的基础上) 注意: 因此 0x 00 00 00 3C这个位置很重要,可以直接跳过DOS桩,找到PE头的起始地址 指明了 PE开始的位置.上边的结构体中,只要是重要的 部分 ,我已经用 别的颜色显示了。。 利用 文件的页数和最后的一页的字节数 得出 文件的总大小(n-1)*512 + 最后 一页的字节数 DOS头数据的分析: 首先是 M Z这2个字节,然后是 文件最后一页的 字节数2个字节,文件的总共页数1个字节。。重定向的个数 2个字节,文件头总大小2个字节(以16B的段为单位),需要的最小附加段的个数2个字节,所需要的最大字节数的个数2个字节,ss值2个字节,sp值两个字节,校验和2个字节,IP值2

文档评论(0)

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

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

1亿VIP精品文档

相关文档