驻留exe文件

http://tech.ddvip.com   2006年03月29日    社区交流

本文详细介绍驻留exe文件

  (7) MS-DOS的exe文件两部构成:

  前部,含装入头(1ch字节长)及重定位表;后部,是装入模块.

  链接时的各机器码暂定,相对装入模块首的偏置:节,用2个字w_o,w_p,存于重定位表.

  (7.1) 装入头的字节偏置:

  0,1 : 4d(M),5a(Z)标识

  2,3 : exe文件净长度,除以512后的余数

  4,5 : exe文件净长度,被512量的值

  6,7 : 重定位表的项数

  8,9 : 前部占用节数

  a,b : 装入模块之后,所需最小节数

  c,d : 装入模块之后,所需最大节数

  e,f : ss相对装入模块首的节数

  10,11 : sp

  12,13 : exe文件的字检查和

  14,15 : ip

  16,17 : cs相对装入模块首的节数

  18,19 : 重定位表相对exe文件的字节偏置

  1a,1b : 覆盖号

  a,长840字节(348h),做debug a,用D 100 L2e,显出exe文件头的前2Eh个字节:

  0100 4D 5A 48 01 02 00 04 00-20 00 00 00 FF FF 0C 00
0110 88 00 D3 A2 11 00 01 00-1E 00 00 00 01 00 14 00
0120 01 00 23 00 01 00 2E 00-01 00 38 00 01 00

  (7.2) 解释装入头:

  (7.2.1) a的长度,除以512后,余148H,放2,3字节

  (7.2.2) a的长度,被512量,占2,放4,5字节

  (7.2.3) 重定位表,含4项

  (7.2.4) exe文件前部,占20H节

  (7.2.5) 重定位表相对a,字节偏置是1eh

  (7.3) 相对a,字节偏置是1eh的重定位表解释:

  第1项,w_o=14h,w_p=1,指出此机器码暂定,相对装入模块首,是1节14h偏置,即1*10h+14h=24h(字节).

  debug从100h装a,向高20h节(200h字节),是装入模块首,(100h+200h)加上24h的324h处,恰为MOV BX,0000中的段值位置.

  第2项,w_o=23,w_p=1,相对装入模块首,是1节23h偏置,即1*10h+23h=33h(字节).300h加上33h的333h处,恰为MOV BX,000A中的段值位置.

责编:豆豆技术应用

正在加载评论...