- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PE文件格式实验讲解
PE文件格式分析实验使用工具LordPE/PEview、winhex选择一个exe或者DLL文件阶段一:(本次实验)DOS头部查看、对应DOS头结构进行数据逐项分析PE头部查看、对应PE头结构进行数据逐项分析Exe文件和DLL文件均是PE格式,他们的区别在哪里?Section表结构的查看(是否可以增加一个新的section表?对齐边界是多少?)PE文件section查看、对应section 块表结构进行数据分析VA、RVA、RA计算问题:你查看的PE文件DOS、PE头部的空隙是多大?问题:你查看的PE文件在那个section的空隙最大/最小?问题:如果手工增加一个section,要修改哪些字段,请手工试验。(提高:你的新块表增加是否引起原文件的对齐位置的改变?)问题(提高):一个section的属性字节如何设置,请在上一个问题基础上实验。本次实验要求对照以上要求,自行选择文件进行分析,撰写报告。阶段二:(后一阶段的工作)资源查看、修改编写PE文件分析程序编写PE病毒程序附录1PE格式详细讲解(一)前几天发了一个PE信息查看器的小工具,本来想用那个获取邀请码的,可是觉得几率不是太大,于是再献上一篇教程,既是为了自己能获得邀请码,也是帮助那些想学习PE格式的人,让知识来源于网络再回归网络。?????N年没写文章了,不知道句子还能不能写通顺,最近正在看《软件加密技术内幕》,刚看完PE结构那部分内容,所以想起来写篇教程作为读书笔记,既可加强记忆又可帮助别人,何乐而不为呢。????好了,废话少说好戏正式上场,PE是英文Portable?Executable(可移植的执行体)的缩写,从缩写可以看出它是跨平台的,即使在非intel的CPU上也能正常运行的。它是?Win32环境自身所带的执行体文件格式。其实不光是EXE文件是PE格式,其它的一些重要文件,例如动态链接库文件(DLL),驱动文件(SYS)等也是PE格式的,所以学好PE格式是非常重要的,以下我把这类文件统称为PE文件。学习PE文件结构不仅可以使我们知道可执行文件是怎样运行的,也可以使我们了解一下windows操作系统的一些工作机制,精通PE是成为计算机高手的必经之路。????其实说白了PE文件格式就是一种文件组织的方式,里面对一些重要信息的存放做了一些规定,比如文件要运行,我们就得先知道入口地址,可是我们从哪去得到入口地址呢,我们必须把保存有入口地址信息的有关数据放在固定的位置,这样不管是哪个文件我们就能从那个固定位置取得入口地址,而这固定位置就是PE标准所规定的。现在我们就来正式学习这套标准,我觉得从整体到部分是个很好的学习方法,先从整体把握全局,然后再重点各个击破,逐渐深入,下面我就以这个思路来介绍PE文件格式,方便大家快速掌握。它总体上由五大部分组成:1.DOS?MZ?header(DOS头)2.DOS?stub3.PE?header(PE头)4.section?table(节表)5.section(各个节)所有的PE文件必须以一个DOS?MZ?header开始,其实它是一个IMAGE_DOS_HEADER类型的结构,这个结构的定义我们可以在WINNT.H头文件找到,此结构中有两个重要的成员是我们必须知道的,第一个e_magic,它是一个DWORD类型的变量,这个变量只有一个用处,就是当我们要判断一个文件是不是PE文件时,我们首先需要把这个变量的值与IMAGE_DOS_SIGNATURE比较,相等就完成了判断的第一步,当然后面我们还得判断一个标志,不等的话就说明当前文件不是PE文件。第二个成员就是非常重要的了,可以说只要它一出错我想这个文件就坏了,它就是e_lfanew,这是一个LONG类型的变量,里面存放了PE头在这个文件中的偏移量,它是定位PE头的关键数据,知道这两个成员的意义后DOS头学习基本就完成了。接下来的DOS?stub实际上是个EXE,当当前系统不支持PE文件结构时它能输出一个错误提示“This?program?requires?Windows”,不是很重要。接下来是重头戏PE头,PE头是一个IMAGE_NT_HEADERS类型的结构,下面是这个结构在WINNT.H中的定义:typedef?struct?_IMAGE_NT_HEADERS?{????DWORD?Signature;????IMAGE_FILE_HEADER?FileHeader;????IMAGE_OPTIONAL_HEADER32?OptionalHeader;}?IMAGE_NT_HEADERS32,?*PIMAGE_NT_HEADERS32;它有三个数据成员,Signature是一个标志变量,这个就是当我们判断一个文件是否是PE文件时第二步需要判断的,若这个值等于PE\0\0时就是一个PE
文档评论(0)