初始图像字节

时间:2017-07-10 18:19:56

标签: windbg masm32

如果我使用Windbg调试asm文件,图像将被加载到内存中的某个位置,在我的情况下是00400000.如果我从00400000转储数据,我可以看到我的汇编代码被加载到图像文件中并且偏移了10000来自这个地址而不是00400000。

这是图像开头的转储。

00400000 ->  00905a4d 00000003 00000004 0000ffff
00400010 ->  000000b8 00000000 00000040 00000000
00400020 ->  00000000 00000000 00000000 00000000
00400030 ->  00000000 00000000 00000000 000000c0

所以,我的问题是图像开头的这个标题是什么,它用于什么?看起来所有图像都有这个标题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您发布的内容看起来像32位格式的PE标头:

0:000> dd 00400000 
00400000  00905a4d 00000003 00000004 0000ffff
00400010  000000b8 00000000 00000040 00000000
00400020  00000000 00000000 00000000 00000000
00400030  00000000 00000000 00000000 00000080

如果将其转储为字节,它将随之显示ASCII字符,您可以轻松识别" MZ"报头中。

0:000> db 00400000 
00400000  4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00  MZ..............
00400010  b8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00  ........@.......
00400020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
00400030  00 00 00 00 00 00 00 00-00 00 00 00 80 00 00 00  ................

您可以使用!dh命令对其进行解码:

0:000> !dh 00400000 

File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
     14C machine (i386)
       3 number of sections
5911398E time date stamp Mon May  8 20:37:50 2017

       0 file pointer to symbol table
       0 number of symbols
      E0 size of optional header
      22 characteristics
            Executable
            App can handle >2gb addresses
[...]

如果您不想使用WinDbg,可以在Stud_PE加载可执行文件,然后为您分析。