以前,网上教大家使用刷8139MAC地址的方法使用远志6.02ROM,是否很麻烦!
本文教大家省去此麻烦!
远志6.02ROM的分析:
seg000:00F5 mov si, cs
seg000:00F7 shl esi, 10h
seg000:00FB mov si, 4E22h
seg000:00FE mov edi, 20000100h ; CODE XREF: seg000:01BFJ
seg000:0104 mov ecx, 204Dh
seg000:010A call _Decompress ; 从si开始,解压缩到edi 2000:0100处
seg000:010D mov si, cs
seg000:010F shl esi, 10h
seg000:0113 mov si, 6E6Fh
seg000:01B0 rep movsb ; 将主程序搬家4000:0 cx=f000 6000:0
seg000:01B2 push cs
seg000:01B3 push offset word_1C0 ; set retf address 6f00:3b8
seg000:01B6 mov ax, 100h
seg000:01B9 push 6000h
seg000:01BC push 100h
seg000:01BF retf ; jmp 6000:100
到此,执行6000:0100主程序.
下面是6000:0100中的部分:
seg000:06B5 call near ptr _InitNIC ; 执行2000:100
seg000:06B8 mov ds Maket, al ;根据2000:100中判断MAC的返回值,决定继续执行或死机!
seg000:06BB or ax, ax
seg000:06BD jnz short loc_6CB ;继续执行
seg000:06BF or bx, bx
seg000:06C1
seg000:06C1 loc_6C1:
seg000:06C1 jz short loc_6CB ;继续执行
seg000:06C3 mov si, offset aInvalidCopySys ; "Invalid copy!!!, system halt."MAC地址不正确,死机!
seg000:06C6 call _TypeText
seg000:06C9
seg000:06C9 _HALT: ; CODE XREF: seg000:_HALTj
seg000:06C9 jmp short _HALT
seg000:06CB ; ---------------------------------------------------------------------------
seg000:06CB
seg000:06CB loc_6CB: ; CODE XREF: seg000:06BDj
seg000:06CB ; seg000:loc_6C1j
seg000:06CB mov dl, 80h ; ' |