Windows EXE头中的奇怪值
我在EXE头中看到一个奇怪的值Windows EXE头中的奇怪值,windows,portable-executable,executable-format,Windows,Portable Executable,Executable Format,我在EXE头中看到一个奇怪的值 00000000 :4D 5A 90 00 03 00 00 00 - 04 00 00 00 FF FF 00 00 00000010 :B8 00 00 00 00 00 00 00 - 40 00 00 00 00 00 00 00 00000020 :00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 00000030 :00 00 00 00 00 00 00 00 - 00 00 00 00 A8 00
00000000 :4D 5A 90 00 03 00 00 00 - 04 00 00 00 FF FF 00 00
00000010 :B8 00 00 00 00 00 00 00 - 40 00 00 00 00 00 00 00
00000020 :00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00000030 :00 00 00 00 00 00 00 00 - 00 00 00 00 A8 00 00 00
00000030 :00 00 00 00 00 00 00 00 - 00 00 00 00 A8 00 00 00 <-
00000000:4D 5A 90 00 03 00-04 00 00 00 FF 00 00
00000010:B800-40000
00000020 :00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00000030:00 00 00-00 00 00 00 A8 00 00 00
000000 30:00 00 00-00 00 00 A8 00 00偏移量0x3c处的DWORD是新EXE头(也称为图像头)的偏移量。因此,如果在此处更改值,PE加载程序将无法找到新的EXE头。PE的第一部分是MSDOS存根;在0x3C(您的“A8”所在位置)有PE文件签名的偏移量。如果将其归零,加载程序将无法找到PE签名,并将拒绝加载它(或者将其作为MS-DOS可执行文件加载,我没有尝试)。
有关更多信息,请参阅。我怀疑这是新PE头的偏移量,前30多个字节是MS-DOS头,该偏移量到“A8”所在的文件中,对应于结构\u IMAGE\u DOS\u头中名为LONG e\u lfanew;//新exe头的文件地址
;
值“A8”将是包含此信息的新图像\u NT\u标题的一部分
- 德沃德签名李>
- _图像文件头文件头李>
- _图像\可选\标题可选标题李>
前两个字节是可执行文件中的原始MS-DOS头,如下常量所示:WORD IMAGE\u DOS\u SIGNATURE=0x5A4D;//MZ
;IMAGE\u NT\u标头具有此签名,以标识它是NT平台的可执行文件DWORD IMAGE\u NT\u签名=0x00004550;//PE00
您将在名为pe.h
的头文件中找到所有这些信息
发生的情况是,您删除了值“A8”,加载程序找不到图像\u NT\u标头,因此失败。为什么要处理程序标头?如果我们能理解你为什么关心里面的东西可能会有所帮助。还有,这是什么平台?这里有一个文件可能会帮助你:我想意大利马特奥在他的回答中给出了链接:。