1.关机.插上一块三茗中国芯卡.开机启动电脑,选择不安装,在dos或win98的dos框下键入debug然后回车. -d cc00:0或d d000:0,从cc00段开始找三茗中国芯的程序,有显示55AA40.........SAMING PCI信息的就是.以本机为例,在cc00段,然后 -r cx ;设定文件大小 -cx:8000 ;32k -n sm.bin ;起文件名sm.bin -w cc00:0 ;从cc00段开始写. -q ;退出debug,返回dos.至此,已经得到了三茗中国芯的rom程序.
2.修改PCI标志.输入DEBUG SM.BIN回车. -D 120 -XXXX:120:50 43 49 52 00 00 60 60,其中:0000是卡的厂商标志,我们把它改为8139网卡的厂商标志10EC; 6060是卡的设备标志,把它改为8139网卡的设备标志8139 -E 124 -00 输入 EC后按空格键, -00 输入 10后按空格键;-60 输入 39后按空格键,-60输入 81后按空格键,然后按回车. -W ;写入文件. -Q ;退出debug,返回dos.至此,三茗中国芯的rom程序,可以在8139网卡上工作了.用编程器写入27256.插在网卡上,关机.取出三茗中国芯卡,插上网卡.开机,提示ROM ERRON, 说明ROM工作了,但是校验和错误.
3.用刘涛涛的TR跟踪一下三茗中国芯的rom程序,把它的压缩包解开。看看它是怎么回事.
seg000:C264 _CheckSUM proc far ; CODE XREF: seg000:C215p seg000:C264 xor ecx, ecx seg000:C267 mov cx, 0C4C3h seg000:C26A xor si, si seg000:C26C xor ax, ax seg000:C26E xor bx, bx seg000:C270 seg000:C270 loc_C270: ; CODE XREF: _CheckSUM+3Cj seg000:C270 mov bl, cs:[si] seg000:C273 mov bl, cs:[si] seg000:C276 mov bl, cs:[si] seg000:C279 mov bl, cs:[si] seg000:C27C mov bl, cs:[si] seg000:C27F cmp bl, cs:[si] seg000:C282 jz short loc_C29D seg000:C284 mov ax, 3 seg000:C287 int 10h ; - VIDEO - SET VIDEO MODE seg000:C287 ; AL = mode seg000:C289 push 1 seg000:C28B push 101h seg000:C28E push 2 seg000:C290 push 11h seg000:C292 push offset aRomChecksumErr ; "ROM CHECKSUM ERR!" seg000:C295 call sub_8E15 seg000:C298 add sp, 0Ah seg000:C29B pop ax seg000:C29C retf seg000:C29D ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? seg000:C29D seg000:C29D loc_C29D: ; CODE XREF: _CheckSUM+1Ej seg000:C29D add ax, bx seg000:C29F inc si seg000:C2A0 loop loc_C270 seg000:C2A2 cmp ax, cs:word_C4C3 ; 计算和 seg000:C2A7 jz short locret_C2C2 seg000:C2A9 mov ax, 3 seg000:C2AC int 10h ; - VIDEO - SET VIDEO MODE seg000:C2AC ; AL = mode seg000:C2AE push 1 seg000:C2B0 push 101h seg000:C2B3 push 2 seg000:C2B5 push 0Dh seg000:C2B7 push offset aRomReadErr ; "ROM READ ERR!" seg000:C2BA call sub_8E15 seg000:C2BD add sp, 0Ah seg000:C2C0 jmp short $+2 seg000:C2C2 seg000:C2C2 locret_C2C2: ; CODE XREF: _CheckSUM+43j seg000:C2C2 retn seg000:C2C2 _CheckSUM endp
提示在这里,给它打个补丁,存盘.用编程器写入27256,关机,取出网卡,将新写的27256插在网卡上.插上网卡.开机程序出来了,和三茗中国芯卡的一样.选只保护C盘检测一下,DOS/WIN98启动了, 添加个文件夹,重新启动电脑.啊哈!!显示"警告! PCI卡被拔掉,重启按HOME键卸载",卡没拔呀,程序还有问题. 再看刚才解开的程序,哦,这里是这样判的, mov cs:byte_C1E9, al seg000:BEDC call CheckPCI ; 检测pci存在否? seg000:BEDF jnb short loc_BEE7 ; 不存在 c1f8=0 seg000:BEE1 mov es:byte_C1F8, 1 ; 存在.设c1f8位 1 seg000:BEE7
看一下CheckPCI :
CheckPCI proc near ; CODE XREF: seg000:BEDCp seg000:C1FD push ax seg000:C1FE push cx seg000:C1FF push dx seg000:C200 push si seg000:C201 mov ax, 0B102h seg000:C204 mov cx, 6060h ; 设备 seg000:C207 mov dx, 0 ; 厂商 seg000:C20A xor si, si seg000:C20C int 1Ah ; 检测存在否 seg000:C20E pop si seg000:C20F pop dx seg000:C210 pop cx seg000:C211 pop ax seg000:C212 retn seg000:C212 CheckPCI endp seg000:C212
接着打补丁.用编程器写入27256,关机,取出网卡,将新写的27256插在网卡上.插上网卡.开机程序出来了,和三茗中国芯卡的一样.选只保护C盘检测一下,DOS/WIN98启动了, 添加个文件夹,重新启动电脑,不显示"PCI卡被拔掉...按HOME键移除"了,一切正常,保护功能正常.找台XP试试,启动XP后先安装驱动,再重新启动,再设定保护.添加个文件夹,重新启动电脑,OK,保护功能正常.
4.如果想在其他型号网卡上使用,只需修改,对应的厂商、设备代码即可。
|