我用LordPe查看两个不同的exe文件,第一个文件的VirtualSize<SizeOfRawData,第二个文件的VirtualSize>SizeOfRawData,FileAlignment与SectionAlignment都是默认大小,第一个EXE文件的VirtualSize可以随便改,只要不越界就行;而第二个却无法修改。而且根据VC知识库的文章
185K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4k6U0K9$3u0S2M7$3g2Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8$3y4#2L8h3g2F1N6q4)9J5c8Y4k6A6k6i4N6V1L8$3y4Q4x3V1k6Q4x3@1k6A6k6q4)9K6c8o6p5K6x3K6b7`. PE文件格式详解(上),
段头部的域
·Name。每个段都有一个8字符长的名称域,并且第一个字符必须是一个句点。
·PhysicalAddress或VirtualSize。第二个域是一个union域,现在已不使用了。
·VirtualAddress。这个域标识了进程地址空间中要装载这个段的虚拟地址。实际的地址由将这个域的值加上可选头部结构中的ImageBase虚拟地址得到。切记,如果这个映像文件是一个DLL,那么这个DLL就不一定会装载到ImageBase要求的位置。所以一旦这个文件被装载进入了一个进程,实际的ImageBase值应该通过使用GetModuleHandle来检验。
·SizeOfRawData。这个域表示了相对FileAlignment的段实体尺寸。文件中实际的段实体尺寸将少于或等于FileAlignment的整倍数。一旦映像被装载进入了一个进程的地址空间,段实体的尺寸将会变得少于或等于FileAlignment的整倍数。
·PointerToRawData。这是一个文件中段实体位置的偏移量。
·PointerToRelocations、PointerToLinenumbers、NumberOfRelocations、NumberOfLinenumbers。这些域在PE格式中不使用。
·Characteristics。定义了段的特征。这些值可以在WINNT.H及本光盘(译注:MSDN的光盘)的PE格式规范中找到。
汗,VirtualSize竟然已经不使用了?我要晕了啊!请了解的大大说两句!
[培训]科锐逆向工程师培训第53期2025年7月8日开班!