DOS EXE

约 394 个字 预计阅读时间 1 分钟

00000000: 4d5a 5001 0200 0200 2000 0000 ffff 0500  MZP..... .......
            |   |     |    |    |   |    |    |
            |   |     |    |    |   |    |    `---[e-f]堆栈段的段值ss(相对值)=该段(stack)段地址-第一个段地址的差      
            |   |     |    |    |   |    `--------[c-d]至多可以为EXE分配多少字节,几乎都是ffffh
            |   |     |    |    |   `-------------[a-b]至少要为EXE分配多少字节,几乎都是0000h
            |   |     |    |    `-----------------[8-9]文件头的节长度,一节=10h,文件头的字节长度=节长度*10H;该文件头长度为0020*10h=200h                                      
            |   |     |    `----------------------[6-7]重定位项的个数(后续说明)
            |   |     `---------------------------[4-5]小端格式表示当前exe在硬盘中占几个扇区,一个扇区200h=512 bytes, 0002h个扇区                                                             
            |   `---------------------------------[2-3]小端格式表示最后一个扇区的字节数,如果为0,表示最后一个扇区是满的,
            |                                          此时最后一个扇区的字节数是0150h       
            `-------------------------------------[0-1]标志“MZ”,操作系统在运行exe文件时,会检查这两个字节,判断是否为exe文件---防止死机
00000010: 0001 e80e 2800 0200 1e00 0000 0100 0100  ....(...........
            |   |     |    |    |   |    |    |
            |   |     |    |    |   |    |    `---[1Eh-1Fh] 重定位的偏移地址=0001h      
            |   |     |    |    |   |    `
            |   |     |    |    |   `
            |   |     |    |    `-----------------[18h-19h] 重定位表的偏移位置001eh(后续说明)                                         
            |   |     |    `----------------------[16h-17h] delta CS,代码段的段地址=该段(.text)-第一个段地址的差
            |   |     `---------------------------[14h-15h]IP的值0028h,程序在载入运行时第一条指令地址,病毒必须修改此处                                                            
            |   `---------------------------------[12h-13h] EXE文件头的校验值,在DOS中没什么用,windows里的驱动文件.sys(格式其实上是EXE)中使用
            `-------------------------------------[10h-11h] sp寄存器的值(绝对值)0100h
00000020: 0200 0d00 0200 0000 0000 0000 0000 0000  ................
            |   |    |
            |   |    |
            |   |    |
            |   |    |
            |   |    `-------------------------------[24h-25h] Δ=0002h 首段地址+Δ=重定位的段地址
            |   `------------------------------------[22h-23h]重定位的偏移地址=000Dh
            `----------------------------------------[20h-21h]重定位Δ=0002h,首段地址+Δ=重定位的段地址