搜索
查看: 9069|回复: 34

广讯辅号算法详解

[复制链接]
发表于 2003-5-10 01:31 | 显示全部楼层

广讯辅号算法详解

来自:MACD论坛(bbs.shudaoyoufang.com) 作者:yy28 浏览:9069 回复:34

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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 ]
参与人数 1 +10 时间 理由
吼吼吼! + 10 2005-1-18 02:04

查看全部评分

金币:
奖励:
热心:
注册时间:
2002-4-9

回复 使用道具 举报

 楼主| 发表于 2003-5-10 02:15 | 显示全部楼层
帖上来不整齐,下载慢慢看。

[ Last edited by yy28 on 2004-6-26 at 16:09 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
金币:
奖励:
热心:
注册时间:
2002-4-9

回复 使用道具 举报

发表于 2003-5-13 08:28 | 显示全部楼层

如何修改广讯辅号?

如何修改广讯辅号?
金币:
奖励:
热心:
注册时间:
2003-1-6

回复 使用道具 举报

签到天数: 1 天

发表于 2003-5-13 09:23 | 显示全部楼层
果然是好东西
金币:
奖励:
热心:
注册时间:
2002-5-8

回复 使用道具 举报

发表于 2003-5-13 09:38 | 显示全部楼层

Originally posted by yy28 at 2003-5-10 01:31 AM:
WinPlat.exe 可能各版本有差异,我用的是珠图RS2.4,日期为02-2-24 1:25
在98/ME下,广讯辅号其实就是读取主板BIOS的四段字符串十六进制和,地址如下:
(1) FE061  Award Modular BIOS v4.51PG                  8 ...

那仅是川台的算法,浙江、中七有不对了。广讯通不能用了吧!
金币:
奖励:
热心:
注册时间:
2003-2-26

回复 使用道具 举报

发表于 2003-5-13 09:56 | 显示全部楼层
广讯通在浙江、中七上无法使用。
金币:
奖励:
热心:
注册时间:
2002-4-11

回复 使用道具 举报

发表于 2003-5-14 16:34 | 显示全部楼层
高手就是高手
金币:
奖励:
热心:
注册时间:
2003-5-14

回复 使用道具 举报

签到天数: 5 天

发表于 2004-2-9 02:19 | 显示全部楼层
应该给楼主加上一万分!!!!!

呵呵
金币:
奖励:
热心:
注册时间:
2003-8-14

回复 使用道具 举报

签到天数: 5 天

发表于 2004-2-9 02:20 | 显示全部楼层
谢谢,高人!!!!!

高,实在是高!!!!!
金币:
奖励:
热心:
注册时间:
2003-8-14

回复 使用道具 举报

发表于 2004-2-9 09:45 | 显示全部楼层

顶!

金币:
奖励:
热心:
注册时间:
2003-7-9

回复 使用道具 举报

签到天数: 1 天

发表于 2004-2-9 11:21 | 显示全部楼层
多谢!
金币:
奖励:
热心:
注册时间:
2001-9-1

回复 使用道具 举报

发表于 2004-2-9 18:47 | 显示全部楼层

很好

金币:
奖励:
热心:
注册时间:
2003-3-22

回复 使用道具 举报

发表于 2004-2-16 15:34 | 显示全部楼层
xiexie!!!
金币:
奖励:
热心:
注册时间:
2003-7-8

回复 使用道具 举报

签到天数: 1 天

发表于 2004-3-15 23:30 | 显示全部楼层
刚学汇编,不是很看得懂。
金币:
奖励:
热心:
注册时间:
2003-1-19

回复 使用道具 举报

发表于 2004-3-16 03:25 | 显示全部楼层
金币:
奖励:
热心:
注册时间:
2004-3-15

回复 使用道具 举报

发表于 2004-3-16 14:52 | 显示全部楼层

ok

金币:
奖励:
热心:
注册时间:
2004-2-11

回复 使用道具 举报

发表于 2004-3-16 14:55 | 显示全部楼层

不是很看得懂。

金币:
奖励:
热心:
注册时间:
2004-2-11

回复 使用道具 举报

发表于 2004-3-16 15:20 | 显示全部楼层
高手就是高手
金币:
奖励:
热心:
注册时间:
2004-1-9

回复 使用道具 举报

发表于 2004-3-17 14:16 | 显示全部楼层
已收藏!谢谢!慢慢学习。
金币:
奖励:
热心:
注册时间:
2003-6-12

回复 使用道具 举报

发表于 2004-3-21 16:05 | 显示全部楼层
xiexie
金币:
奖励:
热心:
注册时间:
2004-3-21

回复 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站声明:MACD仅提供交流平台,请交流人员遵守法律法规。
值班电话:18209240771   微信:35550268

QQ|举报|意见反馈|手机版|MACD论坛

GMT+8, 2025-12-24 09:13 , Processed in 0.054449 second(s), 13 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表