PE文件之DOS头

来源:互联网 发布:axure rp中文版 mac 编辑:程序博客网 时间:2024/06/01 07:11

微软为了照顾兼容性,在以后的PE文件中也加入了Dos头

在DOS头有两个部分

1 DOS MZ头

结构体为

IMAGE_DOS_HEADER STRUCT

{

+0h WORD e_magic    // Magic DOS signature MZ(4Dh5Ah)     DOS可执行文件标记

+2h   WORD e_cblp    // Bytes on last pageof file

+4h WORD e_cp    // Pages in file

+6h WORD e_crlc    // Relocations

+8h WORD e_cparhdr   // Size of header in paragraphs

+0ah WORD e_minalloc   // Minimun extra paragraphsneeds

+0ch WORD e_maxalloc  // Maximun extra paragraphsneeds

+0eh WORD e_ss            //intial(relative)SS value        DOS代码的初始化堆栈SS

+10h WORD e_sp     // intial SP value                      DOS代码的初始化堆栈指针SP

+12h WORD e_csum     // Checksum

+14h WORD e_ip     // intial IP value              DOS代码的初始化指令入口[指针IP]

+16h WORD e_cs     // intial(relative)CSvalue         DOS代码的初始堆栈入口

+18h WORD e_lfarlc     // File Address ofrelocation table

+1ah WORD e_ovno         // Overlaynumber

+1ch WORD e_res[4]      // Reservedwords

+24h WORD e_oemid      // OEM identifier(fore_oeminfo)

+26h WORD      e_oeminfo   // OEMinformation;e_oemid specific

+29h WORD e_res2[10]   // Reserved words

+3ch DWORD   e_lfanew     //  Offset tostart of PE header      指向PE文件头

} IMAGE_DOS_HEADER ENDS

其中比较重要的是

 E_magic     是DOS头的标志  是:“MZ”

还有就是 e_ifanew    PE头相对于文件的偏移地址

这个还是挺重要的,是PE头的入口地址

接下来到e_ifanew所指的地址部分都是 DOS Stup

也就是DOS文件的执行代码,现在16位的程序已经很少出现了,有兴趣的可以再CMD的debug下改一下代码,尝试一下,也挺好玩的

 

0 0