(2.3)--04:第二章PE格式及逆向工具.pdf
《(2.3)--04:第二章PE格式及逆向工具.pdf》由会员分享,可在线阅读,更多相关《(2.3)--04:第二章PE格式及逆向工具.pdf(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章基础知识知识点一:PE文件格式知识点二:虚拟内存知识点三:调试工具-OllyDBG和IDA知识点四:OllyDBG示例知识点一:PE文件格式PE文件格式可执行文件之所以可以被操作系统加载且运行,是因为它们遵循相同的规范。PE(Portable Executable)是Win32平台下可执行文件遵守的数据格式。常见的可执行文件(如“*.exe”文件和“*.dll”文件)都是典型的PE文件。一个可执行文件不光包含了二进制机器码,还会自带许多其他信息,如字符串、菜单、图标、位图、字体等。PE文件格式规定了所有的这些信息在可执行文件中如何组织。在程序被执行时,操作系统会按照PE文件格式的约定去相
2、应的地方准确地定位各种类型的资源,并分别装入内存的不同区域。PE文件格式把可执行文件分成若干个数据节(section),不同的资源被存放在不同的节中。一个典型的PE文件中包含的节如下:rsrctext idatadataPE文件由编译器产生,存放着二进制的机器代码,也是我们反汇编和调试的对象。初始化的数据块,如宏定义、全局变量、静态变量等。可执行文件所使用的动态链接库等外来函数与文件的信息。存放程序的资源,如图标、菜单等。除此以外,还可能出现的节包括“.reloc”、“.edata”、“.tls”、“.rdata”等。节名也可以自己定义,如果可执行文件经过了“加壳”处理,PE的节信息就会变得非
3、常“古怪”。在Crack和反病毒分析中需要经常处理这类古怪的PE文件。如果是正常编译出的标准PE文件,其节信息往往是大致相同的。但这些section的名字只是为了方便人的记忆与使用,使用Microsoft Visual C+中的编译指示符:#pragma data_seg()可以把代码中的任意部分编译到PE的任意节中全称应该是可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码。要经过脱壳才可以查看源代码。加壳加上外壳后,原始程序代码在磁盘文件中一般是以加密后的形式存在的,只在执行时在内存中还原,这样就可以比较有效地防止对程序文件的非法修改和静态反编译。加壳其
4、实是利用特殊的算法,对EXE、DLL文件里的代码、资源进行压缩、加密。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程附加在原程序上通过Windows加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。压缩壳的特点是减小软件体积大小,加密保护不是重点。加密壳种类比较多,不同的壳侧重点不同,一些壳单纯保护程序,另一些壳提供额外的功能,如提供注册机制、使用次数、时间限制等。加壳工具通常分为压缩壳和加密壳两类。存放着二进制的机器代码的PE文件的节是codetextdatarcscABCD
5、提交单选题1分知识点二:虚拟内存虚拟内存Windows的内存可以被分为两个层面:物理内存和虚拟内存。其中,物理内存非常复杂,需要进入Windows内核级别ring0才能看到。通常,在用户模式下,用调试器看到的内存地址都是虚拟内存。用户编制程序时使用的地址称为虚拟地址或逻辑地址,其对应的存储空间称为虚拟内存或逻辑地址空间;而计算机物理内存的访问地址则称为实地址或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。(1)静态反汇编工具看到的PE文件中某条指令的位置是相对于磁盘文件而言的,即所谓的文件偏移,我们可能还需要知道这条指令在内存中所处的位
6、置,即虚拟内存地址。(2)反之,在调试时看到的某条指令的地址是虚拟内存地址,我们也经常需要回到PE文件中找到这条指令对应的机器码。PE文件与虚拟内存的映射在调试漏洞时,可能经常需要做这样两种操作:数据在PE文件中的地址叫文件偏移地址,这是文件在磁盘上存放时相对于文件开头的偏移。重要概念:相对虚拟地址(Relative Virtual Address,RVA)虚拟内存地址(Virtual Address,VA)装载基址(Image Base)文件偏移地址(File Offset)PE装入内存时的基地址。默认情况下,EXE文件在内存中的基地址是0 x00400000,DLL文件是0 x100000
7、00。这些位置可以通过修改编译选项更改。PE文件中的指令被装入内存后的地址。相对虚拟地址是内存地址相对于映射基址的偏移量。我们需要弄清楚PE文件地址和虚拟内存地址之间的映射关系,首先,我们先看几个重要的概念:虚拟内存地址、映射基址、相对虚拟内存地址三者之间有如下关系:VA=Image Base+RVA0 x1000字节0 x1000字节0 x1000字节装载基址装载基址(Image Base)0 x00400000内存其他.data节.rdata节.text节文件头、节表等0 x200字节0 x200字节0 x200字节PE文件起始文件起始0字节字节.data节.rdata节.text节文件头
8、、节表等PE文件由于操作系统在进行装载时“基本”上保持PE中的各种数据结构,所以文件偏移地址和RVA有很大的一致性。差异PE文件中的数据按照磁盘数据标准存放,以0 x200字节为基本单位进行组织。当一个数据节(section)不足0 x200字节时,不足的地方将被0 x00填充:当一个数据节超过0 x200字节时,下一个0 x200块将分配给这个节使用。因此PE数据节的大小永远是0 x200的整数倍。当代码装入内存后,将按照内存数据标准存放,并以0 x1000字节为基本单位进行组织。类似的,不足将被 补 全,若 超 出 将 分 配 下 一 个0 x1000为其所用。因此,内存中的节总是0 x1
9、000的整数倍。由于文件数据的存放单位与内存数据存放单位不同而造成一些差异:LordPE是一款功能强大的PE文件分析、修改、脱壳软件。LordPE是查看PE格式文件信息的首选工具,并且可以修改相关信息。单击“PE Editor”按钮,选择需要查看的PE文件,如下图所示:查看节信息查看导入导出表地址换算点击Sections按钮,可以查看节信息:在上图中,VOffset是RVA(相对虚拟地址),ROffset是文件偏移。也就是,在系统进程中,代码(.text节)将被加载到0 x400000+0 x11000=0 x411000的虚拟地址中(装载基址+RVA)。而在文件中,可以使用二进制文件打开,看
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2.3 04 第二 PE 格式 逆向 工具
限制150内