PE文件简介与修改.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文件简介与简单修改】 简介: PE文件这里狭义的指windows可执行程序文件,它是COFF格式文件演化而来的,因为windows程序讲究共享和便于调度,所以程序按照一定的格式加以分块并添加一些描述信息,这样就便于系统加载器统一加载以及管理器的管理。 PE文件大体上分为头部(描述信息)和程序信息部分(区段),头部由DOS头,DOS加载段,PE头,区段表组成。dos加载段是为了在dos系统里输出信息而保留的,除它之外其他每一个部分都是一个复合的结构体数据。 因为是windows程序,所以PE头最值得研究,通过解析头部信息,可以得到许多和程序实现相关的信息。 下面做一个简单的PE文件修改实验,利用一些工具,一些PE信息,来把一个已有的exe文件改造,输出新年快乐的字符,预祝大家新年快乐! 第一步 用c语言写一个普通程序并用release方式组建成发布版的exe文件(可执行文件) 第二步 用PE editor查看工具简单查看一下此文件的头部,感兴趣的小伙伴可以阅读一下相关的信息数据 入口点:程序注入内存后开始执行的第一条指令在文件中的偏移地址 镜像基址:镜像就是内存中的意思,镜像基址就是文件注入内存后的起始地址(VA) 代码基址:代码段注入后的相对偏移地址(RVA),加上上面的VA就得到代码段的起始内存地址,但是它和入口点并不同,代码起始位置就是main函数下的第一句话,但是入口点是额外的初始化程序,这段程序最后一句才跳到代码段起始位置开始main函数执行 第三步 关闭上述查看工具,记下代码段起始地址是0x401000,然后用反汇编软件C32ASM打开此文件,定位到这个地址处。可以看到前面四行就是printf和system(pause)的调用,紧接着就是是堆栈清理和返回过程了 我们希望在输出hello?PE后再输出happy?new?year?to?you,这里的思路就是在前两行之后插入一个跳转命令,在另一个空余的地方写下我们期望的部分。恰好这里的返回命令后有几个nop命令,我们可以把堆栈恢复指令往后移动,就可以空出写jmp的位置了 这就是移动之后的状态 第四步 浏览数据段,可以看到hello?PE就存放在这里,我们找一块空地(0的位置),然后修改数据成happy ?new? year的ascii码。 第五步 再找一处空区域,例如在地址407000处写下: push?408000//字符串地址 call?4010b6 add?esp,4??//堆栈恢复 jmp?40101A//返回位置 然后到开始的nop处写下: jmp?407000 这样二者就衔接起来了 完成 然后保存修改,运行文件,得到如图效果:

文档评论(0)

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

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

1亿VIP精品文档

相关文档