- 金币:
-
- 奖励:
-
- 热心:
-
- 注册时间:
- 2002-4-9
|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
WinPlat.exe 可能各版本有差异,我用的是珠图RS2.4,日期为02-2-24 1:25
在98/ME下,广讯辅号其实就是读取主板BIOS的四段字符串十六进制和,地址如下:
(1) FE061 Award Modular BIOS v4.51PG 825
(2) FFFF5 04/17/00 18A
(3) FE091 Copyright (C) 1984-98,Award Software,Inc D3B
(4) FEC71 04/17/2000-693-596-W977-2A6LFPABC-00 7C2
算法:(1)+(2)=(高4位)、即 825+18A=9AF
(3)+(4)=(低4位)、即 D3B+7CC=14FD
将 09AF14FD(162469117)除05F5E0FF(99999999)余数为03B933FE(62469118)
本机辅号为:62469118
用TRW2000加载WinPlat.exe
先下 D FE061 可在内存窗中看到第一段字符串及十六进制值,字符串长度以十六进制值00结束.
再下BPX 401020 然后按F5,程序会停在401020的代码中:
; BPX 401056 程序中断时, EAX就是第一段字符串十六进制和 825
; BPX 401099 程序中断时, EAX就是第三段字符串十六进制和 D3B
; BPX 4010D6 程序中断时, EAX就是第二段字符串十六进制和 18A
; BPX 401116 程序中断时, EAX就是第四段字符串十六进制和 7C2
; BPX 401172 程序中断时, 用 ? ECX 就可看到辅号03B933FE(62469118).
0167:00401000 8B442404 MOV EAX,[ESP+04] ;EAX=0000FE00 ★
0167:00401004 8B4C2408 MOV ECX,[ESP+08] ;ECX=00000061
0167:00401008 25FFFF0000 AND EAX,FFFF
0167:0040100D 81E1FFFF0000 AND ECX,FFFF
0167:00401013 C1E004 SHL EAX,04 ;左移后EAX=000FE000
0167:00401016 8A0408 MOV AL,[EAX+ECX] ;AL=41,因为FE061地址存放的就是41
0167:00401019 C3 RET
0167:0040101A 90 NOP
0167:0040101B 90 NOP
0167:0040101C 90 NOP
0167:0040101D 90 NOP
0167:0040101E 90 NOP
0167:0040101F 90 NOP
0167:00401020 51 PUSH ECX ;从这里开始计算第一段字符串十六进制和
0167:00401021 56 PUSH ESI
0167:00401022 57 PUSH EDI
0167:00401023 33FF XOR EDI,EDI ;EDI=0
0167:00401025 33F6 XOR ESI,ESI ;ESI=0
0167:00401027 8D4661 LEA EAX,[ESI+61] ;AL=61,是第一段字符串低地址
0167:0040102A 50 PUSH EAX
0167:0040102B 6800FE0000 PUSH DWORD FE00 ;FE00是移位前的第一段字符串高地址
0167:00401030 E8CBFFFFFF CALL 00401000 ;传送地址并取得对应字符的十六进制值 ★
0167:00401035 88442410 MOV [ESP+10],AL
0167:00401039 83C408 ADD ESP,BYTE +08
0167:0040103C 8B4C2408 MOV ECX,[ESP+08] ;ECX=006BFC41
0167:00401040 81E1FF000000 AND ECX,FF ;ECX=00000041
0167:00401046 03F9 ADD EDI,ECX ;EDI存放各字符累加和,现在是00000041
0167:00401048 46 INC ESI
0167:00401049 6681FEF401 CMP SI,01F4
0167:0040104E 7704 JA 00401054 ;
0167:00401050 84C0 TEST AL,AL
0167:00401052 75D3 JNZ 00401027 ;AL非0就读下一个字符,直到计算完整段字符串十六进制和
0167:00401054 8BC7 MOV EAX,EDI ;EAX放的就是第一段字符串十六进制和,我的是825
0167:00401056 5F POP EDI
0167:00401057 5E POP ESI
0167:00401058 59 POP ECX
0167:00401059 C3 RET
0167:0040105A 90 NOP
0167:0040105B 90 NOP
0167:0040105C 90 NOP
0167:0040105D 90 NOP
0167:0040105E 90 NOP
0167:0040105F 90 NOP
0167:00401060 51 PUSH ECX ;从这里开始计算第三段字符串十六进制和,
0167:00401061 56 PUSH ESI 算法同第一段
0167:00401062 57 PUSH EDI
0167:00401063 33FF XOR EDI,EDI
0167:00401065 33F6 XOR ESI,ESI
0167:00401067 8D8691000000 LEA EAX,[ESI+91] ;91是第三段字符串低地址
0167:0040106D 50 PUSH EAX
0167:0040106E 6800FE0000 PUSH DWORD FE00 ;FE00是移位前的第三段字符串高地址
0167:00401073 E888FFFFFF CALL 00401000
0167:00401078 88442410 MOV [ESP+10],AL
0167:0040107C 83C408 ADD ESP,BYTE +08
0167:0040107F 8B4C2408 MOV ECX,[ESP+08]
0167:00401083 81E1FF000000 AND ECX,FF
0167:00401089 03F9 ADD EDI,ECX
0167:0040108B 46 INC ESI
0167:0040108C 6681FEF401 CMP SI,01F4
0167:00401091 7704 JA 00401097
0167:00401093 84C0 TEST AL,AL
0167:00401095 75D0 JNZ 00401067
0167:00401097 8BC7 MOV EAX,EDI
0167:00401099 5F POP EDI
0167:0040109A 5E POP ESI
0167:0040109B 59 POP ECX
0167:0040109C C3 RET
0167:0040109D 90 NOP
0167:0040109E 90 NOP
0167:0040109F 90 NOP
0167:004010A0 51 PUSH ECX ;从这里开始计算第二段字符串十六进制和,
0167:004010A1 56 PUSH ESI 算法同第一段
0167:004010A2 57 PUSH EDI
0167:004010A3 33FF XOR EDI,EDI
0167:004010A5 33F6 XOR ESI,ESI
0167:004010A7 8D4605 LEA EAX,[ESI+05] ;05是第二段字符串低地址
0167:004010AA 50 PUSH EAX
0167:004010AB 68FFFF0000 PUSH DWORD FFFF ;FFFF是移位前的第二段字符串高地址
0167:004010B0 E84BFFFFFF CALL 00401000
0167:004010B5 88442410 MOV [ESP+10],AL
0167:004010B9 83C408 ADD ESP,BYTE +08
0167:004010BC 8B4C2408 MOV ECX,[ESP+08]
0167:004010C0 81E1FF000000 AND ECX,FF
0167:004010C6 03F9 ADD EDI,ECX
0167:004010C8 46 INC ESI
0167:004010C9 6681FEF401 CMP SI,01F4
0167:004010CE 7704 JA 004010D4
0167:004010D0 84C0 TEST AL,AL
0167:004010D2 75D3 JNZ 004010A7
0167:004010D4 8BC7 MOV EAX,EDI
0167:004010D6 5F POP EDI
0167:004010D7 5E POP ESI
0167:004010D8 59 POP ECX
0167:004010D9 C3 RET
0167:004010DA 90 NOP
0167:004010DB 90 NOP
0167:004010DC 90 NOP
0167:004010DD 90 NOP
0167:004010DE 90 NOP
0167:004010DF 90 NOP
0167:004010E0 51 PUSH ECX ;从这里开始计算第四段字符串十六进制和,
0167:004010E1 56 PUSH ESI 算法同第一段
0167:004010E2 57 PUSH EDI
0167:004010E3 33FF XOR EDI,EDI
0167:004010E5 33F6 XOR ESI,ESI
0167:004010E7 8D4671 LEA EAX,[ESI+71] ;71是第四段字符串低地址
0167:004010EA 50 PUSH EAX
0167:004010EB 68C0FE0000 PUSH DWORD FEC0 ;FEC0是移位前的第四段字符串高地址
0167:004010F0 E80BFFFFFF CALL 00401000
0167:004010F5 88442410 MOV [ESP+10],AL
0167:004010F9 83C408 ADD ESP,BYTE +08
0167:004010FC 8B4C2408 MOV ECX,[ESP+08]
0167:00401100 81E1FF000000 AND ECX,FF
0167:00401106 03F9 ADD EDI,ECX
0167:00401108 46 INC ESI
0167:00401109 6681FEF401 CMP SI,01F4
0167:0040110E 7704 JA 00401114
0167:00401110 84C0 TEST AL,AL
0167:00401112 75D3 JNZ 004010E7
0167:00401114 8BC7 MOV EAX,EDI
0167:00401116 5F POP EDI
0167:00401117 5E POP ESI
0167:00401118 59 POP ECX
0167:00401119 C3 RET
0167:0040111A 90 NOP
0167:0040111B 90 NOP
0167:0040111C 90 NOP
0167:0040111D 90 NOP
0167:0040111E 90 NOP
0167:0040111F 90 NOP
0167:00401120 81ECA4000000 SUB ESP,A4
0167:00401126 8D442410 LEA EAX,[ESP+10]
0167:0040112A C744241094000000 MOV DWORD [ESP+10],94
0167:00401132 50 PUSH EAX
0167:00401133 FF15CC134400 CALL `KERNEL32!GetVersionExA`
0167:00401139 837C242001 CMP DWORD [ESP+20],BYTE +01
0167:0040113E 756B JNZ 004011AB
0167:00401140 53 PUSH EBX
0167:00401141 56 PUSH ESI
0167:00401142 57 PUSH EDI
0167:00401143 E8D8FEFFFF CALL 00401020 ;计算第一段字符串十六进制和
0167:00401148 8BF8 MOV EDI,EAX
0167:0040114A E811FFFFFF CALL 00401060 ;计算第三段字符串十六进制和
0167:0040114F 8BF0 MOV ESI,EAX
0167:00401151 E84AFFFFFF CALL 004010A0 ;计算第二段字符串十六进制和
0167:00401156 8BD8 MOV EBX,EAX
0167:00401158 E883FFFFFF CALL 004010E0 ;计算第四段字符串十六进制和
0167:0040115D 8D0C3B LEA ECX,[EBX+EDI] ;程序在这地方可看到:
;EDI=第一段字符串和,我的是825,
;EBX=第二段字符串和,我的是18A,
;ESI=第三段字符串和,我的是D3B,
;EAX=第四段字符串和,我的是7C2,
;ECX=000009AF (825+18A)辅号的高四位
0167:00401160 03F0 ADD ESI,EAX ;ESI=000014FD (D3B+7C2)辅号的低四位
0167:00401162 C1E110 SHL ECX,10 ;左移得到ECX=09AF0000
0167:00401165 03CE ADD ECX,ESI ;ECX=09AF14FD
0167:00401167 33D2 XOR EDX,EDX
0167:00401169 8BC1 MOV EAX,ECX
0167:0040116B B9FFE0F505 MOV ECX,05F5E0FF
0167:00401170 F7F1 DIV ECX ;商在EAX,余数在EDX,取余数EDX=03B933FE,十进制就是本机辅号:62469118。
0167:00401172 8954240C MOV [ESP+0C],EDX
0167:00401176 52 PUSH EDX
0167:00401177 8D542414 LEA EDX,[ESP+14]
0167:0040117B 68D8104500 PUSH DWORD 004510D8
0167:00401180 52 PUSH EDX
0167:00401181 E8D7FF0000 CALL 0041115D
[ Last edited by yy28 on 2003-5-10 at 02:14 ] |
-
查看全部评分
|
|