EXE格式
MZ
(1) 00-01h:MZ标志,MS-DOS开发者之一的马克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母缩写。
(2) 02-03h:EXE文件最后一个块没有全用完只用了N个字节,即文件长度除以512的余数。
(3) 04-05h:EXE文件使用的块的数量(每块512个字节),文件长度除以512的商 通过(2)(3)两个数据可以计算出文件大小 (3)是该文件中块的数量(1个块=512B) (2)是最后一个块的字节数(没有用完512B) 文件长度 = (Block-1) * 512B + Bytes。
(4) 06-07h:重定向项目的个数。 EXE文件加载到内存执行时文件中数据的偏移地址跟内存中 偏移是不一样的,重定向就是达到重新修改偏移的目的。
(5) 08-09h:该处数据指出了EXE头部大小,一般来说,EXE头部之后紧跟着程序数据。 单位是节,1节=16(0x10)字节 如文件偏移0020h*10h=200h。
(6) 0A-0Bh:该处数据指出了运行该程序所需的最小内存,如果小于这个内存,程序将不会被加载执行。
(7) 0C-0Dh:该处数据指出了运行该程序所需的最大内存,一般为FFFFh。
(8) 0E-0Fh:堆栈段在装入模块中的偏移,如:00E5h
(9) 10-11h:SP初始值,如:0080h。即SS:SP=00E5:0080。
(10) 14-15h:IP初始值。
(11) 16-17h:CS在装入模块中的偏移。
(12) 18-19h:指出了第一个重定向项目在文件中的偏移, 如003Eh,表示文件003Eh偏移处存放了第一个重定向项目的内容。
(13) 1A-1Bh:覆盖号(程序驻留为零)。
(14) 1C:重定位表,起点由偏移18-19h给出,项数由06-07h标明。
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值