Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows EXE头中的奇怪值_Windows_Portable Executable_Executable Format - Fatal编程技术网

Windows 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

我在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 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标头,因此失败。

为什么要处理程序标头?如果我们能理解你为什么关心里面的东西可能会有所帮助。还有,这是什么平台?这里有一个文件可能会帮助你:我想意大利马特奥在他的回答中给出了链接:。