瑞科英语通 V3.0
软件大小: 2327
KB
软件语言: 简体中文
软件类别: 国产软件 / 共享版 / 外语学习
应用平台: Win9x/NT/2000/XP
界面预览:
无
加入时间: 2003-04-25 09:31:32
下载地址: http://www.skycn.com/soft/11849.html
联 系 人: zcgkali@kali.com.cn
开 发 商: http://rike.yeah.net/
软件介绍:
"瑞科英语通"是一款个人英语学习和学校课堂辅助教学的软件。精通英语必须经常性地
进行"听,说、读、写"的练习,"瑞科英语通"就是帮助你进行这些综合练习的学习和教学软
件,本软件结合了多种成功的英语学习和英语教学经验,提供了超强的"听,说、读、写"的
功能、科学的并可随心所欲组合的学习方法,使您在很短的时间内提高"听,说、读、写"的
能力,使您成为名符其实的英语通。
【作者声明】:本人只是对Crack感兴趣,没有其它目的。
【破解工具】:Ollydbg1.09
中文版
—————————————————————————————
【过
程】:
由于是vb程序,所以在Ollydbg中用ALT+E到MSVBVM60.DLL领空,下__vbastrcmp中断。
来到这里:
004AA515
PUSH EBX
004AA516 PUSH EAX
004AA517
CALL DWORD PTR DS:[401060]
004AA51D
MOV EAX, DWORD PTR SS:[EBP-2C]
004AA520 LEA
ECX, DWORD PTR SS:[EBP-54]
004AA523 MOV DWORD PTR
SS:[EBP-3C], EAX
004AA526 LEA EAX, DWORD PTR SS:[EBP-44]
004AA529
PUSH EAX
004AA52A PUSH ECX
004AA52B
MOV DWORD PTR SS:[EBP-2C], EDI
004AA52E MOV
DWORD PTR SS:[EBP-44], 8
004AA535 CALL DWORD PTR
DS:[4010A4]
004AA53B LEA EDX, DWORD
PTR SS:[EBP-54]
004AA53E PUSH EDX
004AA53F CALL
DWORD PTR DS:[401024]
004AA545 MOV
EBX, DWORD PTR DS:[4011D4]
004AA54B MOV
EDX, EAX
004AA54D LEA ECX, DWORD PTR SS:[EBP-24]
004AA550
CALL EBX
; EDI<--0015CCB4,(UNICODE "59622746")
004AA552
LEA ECX, DWORD PTR SS:[EBP-34]
004AA555 CALL
DWORD PTR DS:[401200]
004AA55B LEA
EAX, DWORD PTR SS:[EBP-54]
004AA55E LEA ECX,
DWORD PTR SS:[EBP-44]
004AA561 PUSH EAX
004AA562 PUSH
ECX
004AA563 PUSH 2
004AA565 CALL
DWORD PTR DS:[401034]
004AA56B MOV
EDX, DWORD PTR DS:[ESI]
004AA56D ADD ESP,
0C
004AA570 PUSH ESI
004AA571 CALL DWORD
PTR DS:[EDX+308]
004AA577 PUSH EAX
004AA578 LEA
EAX, DWORD PTR SS:[EBP-34]
004AA57B PUSH EAX
004AA57C
CALL DWORD PTR DS:[40107C]
004AA582
MOV ESI, EAX
004AA584 LEA EDX, DWORD
PTR SS:[EBP-2C]
004AA587 PUSH EDX
004AA588 PUSH
ESI
004AA589 MOV ECX, DWORD PTR DS:[ESI]
004AA58B
CALL DWORD PTR DS:[ECX+A0]
004AA591 CMP
EAX, EDI
004AA593 FCLEX
004AA595 JGE SHORT 004AA5A9
004AA597 PUSH
0A0
004AA59C PUSH 462E34
004AA5A1 PUSH
ESI
004AA5A2 PUSH EAX
004AA5A3 CALL
DWORD PTR DS:[401060]
004AA5A9 MOV
EAX, DWORD PTR SS:[EBP-2C]
; EAX<--0015CCEC,(UNICODE "789456123")<--试验码
004AA5AC
LEA ECX, DWORD PTR SS:[EBP-54]
004AA5AF MOV
DWORD PTR SS:[EBP-3C], EAX
004AA5B2 LEA
EAX, DWORD PTR SS:[EBP-44]
004AA5B5 PUSH EAX
004AA5B6
PUSH ECX
004AA5B7 MOV DWORD PTR SS:[EBP-2C],
EDI
004AA5BA MOV DWORD PTR SS:[EBP-44], 8
004AA5C1 CALL
DWORD PTR DS:[4010A4]
004AA5C7 LEA
EDX, DWORD PTR SS:[EBP-54]
004AA5CA PUSH EDX
004AA5CB
CALL DWORD PTR DS:[401024]
004AA5D1
MOV EDX, EAX
; EDX<--0015CCEC,(UNICODE "789456123")
004AA5D3
LEA ECX, DWORD PTR SS:[EBP-28]
004AA5D6 CALL
EBX
004AA5D8 LEA ECX, DWORD PTR SS:[EBP-34]
004AA5DB
CALL DWORD PTR DS:[401200]
004AA5E1
MOV ESI, DWORD PTR DS:[401034]
004AA5E7 LEA
EAX, DWORD PTR SS:[EBP-54]
004AA5EA LEA ECX,
DWORD PTR SS:[EBP-44]
004AA5ED PUSH EAX
004AA5EE PUSH
ECX
004AA5EF PUSH 2
004AA5F1 CALL
ESI
004AA5F3 ADD ESP, 0C
004AA5F6
MOV EDX, 462068
; UNICODE "zcgrike640315"
004AA5FB
LEA ECX, DWORD PTR SS:[EBP-2C]
004AA5FE CALL
DWORD PTR DS:[401184]
; 0015CCEC<-- UNICODE "zcgrike640315"
004AA604
LEA EDX, DWORD PTR SS:[EBP-2C]
004AA607 LEA
EAX, DWORD PTR SS:[EBP-28]
004AA60A PUSH EDX
004AA60B
PUSH EAX
004AA60C CALL 004A0E30
; <--用上面的字符串和试验码计算出用户号
=======>F8
------用上面的字符串和试验码计算出用户号
004A0EBC
PUSH 20
004A0EBE PUSH 46217C
004A0EC3
PUSH EDI
004A0EC4 PUSH EAX
004A0EC5
CALL DWORD PTR DS:[401060]
004A0ECB
LEA ECX, DWORD PTR SS:[EBP-48]
004A0ECE CALL
DWORD PTR DS:[401200]
004A0ED4 MOV
ESI, DWORD PTR SS:[EBP+C]
004A0ED7 PUSH ESI
004A0ED8
CALL 004A0C40
004A0EDD MOV EDX, EAX
004A0EDF
MOV ECX, ESI
004A0EE1 MOV ESI, DWORD
PTR DS:[4011D4]
004A0EE7 CALL ESI
004A0EE9 MOV
EDX, DWORD PTR SS:[EBP+8]
004A0EEC MOV EAX,
DWORD PTR DS:[EDX]
004A0EEE PUSH EAX
004A0EEF CALL
DWORD PTR DS:[40102C]
004A0EF5 MOV
ECX, EAX
004A0EF7 CALL DWORD PTR DS:[4010E4]
004A0EFD MOV DWORD PTR SS:[EBP-B8],
EAX
004A0F03 MOV EAX, 1
004A0F08 MOV
DWORD PTR SS:[EBP-20], EAX
004A0F0B MOV EDI, DWORD PTR
DS:[401024]
004A0F11 CMP AX, WORD PTR SS:[EBP-B8]
004A0F18
JG 004A117D
004A0F1E MOV DWORD PTR SS:[EBP-50],
1
004A0F25 MOV DWORD PTR SS:[EBP-58], 2
004A0F2C MOV
ECX, DWORD PTR SS:[EBP+8]
004A0F2F MOV DWORD
PTR SS:[EBP-90], ECX
004A0F35 MOV DWORD PTR SS:[EBP-98],
4008
004A0F3F MOVSX EBX, AX
004A0F42 LEA
EDX, DWORD PTR SS:[EBP-58]
004A0F45 PUSH EDX
004A0F46
PUSH EBX
004A0F47 LEA EAX, DWORD PTR
SS:[EBP-98]
004A0F4D PUSH EAX
004A0F4E LEA
ECX, DWORD PTR SS:[EBP-68]
004A0F51 PUSH ECX
004A0F52
CALL DWORD PTR DS:[4010BC]
004A0F58
LEA EDX, DWORD PTR SS:[EBP-68]
004A0F5B PUSH
EDX
004A0F5C CALL EDI
004A0F5E MOV
EDX, EAX
004A0F60 LEA ECX, DWORD PTR SS:[EBP-2C]
004A0F63
CALL ESI
004A0F65 LEA EAX, DWORD PTR
SS:[EBP-68]
004A0F68 PUSH EAX
004A0F69 LEA
ECX, DWORD PTR SS:[EBP-58]
004A0F6C PUSH ECX
004A0F6D
PUSH 2
004A0F6F CALL DWORD PTR DS:[401034]
004A0F75 ADD ESP, 0C
004A0F78
MOV EDX, DWORD PTR SS:[EBP+8]
004A0F7B MOV
EAX, DWORD PTR DS:[EDX]
004A0F7D PUSH EAX
004A0F7E
CALL DWORD PTR DS:[40102C]
004A0F84
XOR EDX, EDX
004A0F86 CMP EBX, EAX
004A0F88
SETNE DL
004A0F8B MOV ECX, DWORD PTR SS:[EBP-2C]
004A0F8E
PUSH ECX
004A0F8F PUSH 462CA8
004A0F94
MOV DWORD PTR SS:[EBP-CC], EDX
004A0F9A CALL
DWORD PTR DS:[4010DC]
004A0FA0 NEG
EAX
004A0FA2 SBB EAX, EAX
004A0FA4 NEG
EAX
004A0FA6 MOV EDX, DWORD PTR SS:[EBP-CC]
004A0FAC
TEST EAX, EDX
004A0FAE JNZ 004A1151
<--这个循环判断试验码的长度和中间有没有连接号"-",第九次不跳,说明注册码长度的第一组是八位
即试验码>8位就不跳,进入计算的地方
004A0FB4
MOV EAX, DWORD PTR SS:[EBP+8]
004A0FB7 MOV
ECX, DWORD PTR DS:[EAX]
004A0FB9 PUSH ECX
004A0FBA
CALL DWORD PTR DS:[40102C]
004A0FC0
MOVSX ECX, WORD PTR SS:[EBP-20]
004A0FC4 CMP
ECX, EAX
004A0FC6 JNZ SHORT 004A0FDD
004A0FC8 MOV EDX, DWORD PTR
SS:[EBP-38]
004A0FCB PUSH EDX
004A0FCC MOV
EAX, DWORD PTR SS:[EBP-2C]
004A0FCF PUSH EAX
004A0FD0
CALL DWORD PTR DS:[401050]
004A0FD6
MOV EDX, EAX
004A0FD8 LEA ECX, DWORD
PTR SS:[EBP-38]
004A0FDB CALL ESI
004A0FDD MOV
CX, WORD PTR SS:[EBP-24]
004A0FE1 ADD CX,
1
004A0FE5 JO 004A1249
004A0FEB MOV
DWORD PTR SS:[EBP-24], ECX
004A0FEE LEA EDX, DWORD PTR
SS:[EBP-38]
004A0FF1 MOV DWORD PTR SS:[EBP-90], EDX
004A0FF7
MOV DWORD PTR SS:[EBP-98], 4008
004A1001 LEA
EAX, DWORD PTR SS:[EBP-98]
004A1007 PUSH EAX
004A1008
LEA ECX, DWORD PTR SS:[EBP-58]
004A100B PUSH
ECX
004A100C CALL DWORD PTR DS:[4010A4]
004A1012 LEA EDX, DWORD PTR SS:[EBP-58]
004A1015
PUSH EDX
004A1016 CALL EDI
004A1018
MOV EDX, EAX
004A101A LEA ECX, DWORD
PTR SS:[EBP-38]
004A101D CALL ESI
004A101F LEA
ECX, DWORD PTR SS:[EBP-58]
004A1022 CALL DWORD
PTR DS:[401020]
004A1028 MOV EAX,
DWORD PTR SS:[EBP-38]
004A102B PUSH EAX
004A102C CALL
DWORD PTR DS:[401208]
004A1032 CALL
DWORD PTR DS:[4011C8]
004A1038 MOV
EBX, EAX
004A103A MOV DWORD PTR SS:[EBP-50],
4
004A1041 MOV DWORD PTR SS:[EBP-58], 2
004A1048 MOV
ECX, DWORD PTR SS:[EBP+C]
004A104B MOV DWORD
PTR SS:[EBP-90], ECX
004A1051 MOV DWORD PTR SS:[EBP-98],
4008
; 以上计算字符串"zcgrike640315"各位ASCII码值的10进制值"1229910311410510710154524851"
004A105B
LEA EDX, DWORD PTR SS:[EBP-58]
004A105E PUSH
EDX
004A105F MOV AX, WORD PTR SS:[EBP-24]
004A1063
SUB AX, 1
004A1067 JO 004A1249
004A106D
IMUL AX, AX, 4
004A1071 JO 004A1249
004A1077
ADD AX, 1
004A107B JO 004A1249
004A1081
MOVSX ECX, AX
004A1084 PUSH ECX
004A1085
LEA EDX, DWORD PTR SS:[EBP-98]
004A108B PUSH
EDX
004A108C LEA EAX, DWORD PTR SS:[EBP-68]
004A108F
PUSH EAX
004A1090 CALL DWORD PTR DS:[4010BC]
; <--取前4位”1229“
004A1096
LEA ECX, DWORD PTR SS:[EBP-68]
004A1099 PUSH
ECX
004A109A CALL EDI
004A109C MOV
EDX, EAX
; EDX<--00165E5C,”1229“
004A109E
LEA ECX, DWORD PTR SS:[EBP-34]
004A10A1 CALL
ESI
004A10A3 LEA EDX, DWORD PTR SS:[EBP-68]
004A10A6
PUSH EDX
004A10A7 LEA EAX, DWORD PTR
SS:[EBP-58]
004A10AA PUSH EAX
004A10AB PUSH
2
004A10AD CALL DWORD PTR DS:[401034]
004A10B3 ADD ESP, 0C
004A10B6 MOV
ECX, DWORD PTR SS:[EBP-34]
; ECX<--00165E5C,”1229“
004A10B9
PUSH ECX
004A10BA CALL DWORD PTR DS:[401208]
;
计算“1229”的16进制=4CD
-----把1229转变成16进制4CD----
|
779C33DD LEA
ECX, DWORD PTR DS:[EBX+EBX*4]
779C33E0 XOR
EBX, EBX
779C33E2 MOV BL, BYTE PTR DS:[EAX]
; BL=01
779C33E4 INC EAX
779C33E5
DEC ESI
779C33E6 LEA EBX, DWORD PTR
DS:[EBX+ECX*2]
779C33E9 MOV ECX, DWORD PTR SS:[EBP-20]
779C33EC
DEC ECX
779C33ED MOV DWORD PTR SS:[EBP-20],
ECX
779C33F0 JNZ SHORT 779C33DD
;
<--把1229转变成16进制4CD
====>F8
----------------------------------
|
004A10C0
CALL DWORD PTR DS:[4011C8]
; <--把值4CD==>DS:[0012E95C] ==>DS:[0012E960]
004A10C6
MOV EDX, DWORD PTR SS:[EBP-44]
004A10C9 MOV
DWORD PTR SS:[EBP-A0], EDX
004A10CF MOV DWORD PTR
SS:[EBP-A8], 8
004A10D9 XOR EAX, EBX
<--关键计算"把试验码的16进制值 XOR "4CD"
004A10DB MOV DWORD PTR SS:[EBP-50], EAX
; EAX=2F0E2036<--中间值
004A10DE
MOV DWORD PTR SS:[EBP-58], 3
004A10E5 LEA
EAX, DWORD PTR SS:[EBP-58]
004A10E8 PUSH EAX
004A10E9
LEA ECX, DWORD PTR SS:[EBP-68]
004A10EC PUSH
ECX
004A10ED CALL DWORD PTR DS:[4011B8]
;
EAX=2F0E2036变成10进制”789454902“,还原成10进制值
===>F8
----16进制转变成10进制----
|
779A23FF
MOV ESI, DWORD PTR SS:[ESP+10]
779A2403 MOV
EBX, ECX
779A2405 MOV EAX, ESI
779A2407
XOR EDX, EDX
779A2409 MOV EDI, 0A
779A240E
ADD ECX, 2
779A2411 DIV EDI
779A2413
MOV EAX, CCCCCCCD
779A2418 MOV EDI,
EDX
779A241A MUL ESI
779A241C SHR
EDX, 3
779A241F ADD EDI, 30
779A2422 MOV
ESI, EDX
779A2424 MOV WORD PTR DS:[ECX-2], DI
779A2428
TEST ESI, ESI
779A242A JA SHORT
779A2405
779A242C
MOV WORD PTR DS:[ECX], 0
779A2431 SUB
ECX, 2
779A2434 MOV DX, WORD PTR DS:[EBX]
779A2437
MOV AX, WORD PTR DS:[ECX]
779A243A MOV
WORD PTR DS:[ECX], DX
779A243D MOV WORD PTR DS:[EBX],
AX
779A2440 SUB ECX, 2
779A2443 ADD
EBX, 2
779A2446 CMP EBX, ECX
779A2448 JB
SHORT 779A2434
779A244A POP EDI
; EAX=2F0E2036变成10进制”789454902“
-----------------------
|
004A10F3
LEA EDX, DWORD PTR SS:[EBP-68]
004A10F6 PUSH
EDX
004A10F7 LEA EAX, DWORD PTR SS:[EBP-78]
004A10FA
PUSH EAX
004A10FB CALL DWORD PTR DS:[4010A4]
004A1101 LEA ECX, DWORD PTR
SS:[EBP-A8]
004A1107 PUSH ECX
004A1108 LEA
EDX, DWORD PTR SS:[EBP-78]
004A110B PUSH EDX
004A110C
LEA EAX, DWORD PTR SS:[EBP-88]
004A1112 PUSH
EAX
004A1113 CALL DWORD PTR DS:[4011AC]
004A1119 PUSH EAX
004A111A CALL
EDI
004A111C MOV EDX, EAX
; EAX=”789454902“
004A111E
LEA ECX, DWORD PTR SS:[EBP-44]
004A1121 CALL
ESI
004A1123 LEA ECX, DWORD PTR SS:[EBP-88]
004A1129
PUSH ECX
004A112A LEA EDX, DWORD PTR
SS:[EBP-78]
004A112D PUSH EDX
004A112E LEA
EAX, DWORD PTR SS:[EBP-68]
004A1131 PUSH EAX
004A1132
LEA ECX, DWORD PTR SS:[EBP-58]
004A1135 PUSH
ECX
004A1136 PUSH 4
004A1138 CALL
DWORD PTR DS:[401034]
004A113E ADD
ESP, 14
004A1141 MOV EDX, 461630
004A1146
LEA ECX, DWORD PTR SS:[EBP-38]
004A1149 CALL
DWORD PTR DS:[401184]
004A114F JMP
SHORT 004A1166
004A1151
MOV EDX, DWORD PTR SS:[EBP-38]
004A1154 PUSH
EDX
004A1155 MOV EAX, DWORD PTR SS:[EBP-2C]
004A1158
PUSH EAX
004A1159 CALL DWORD PTR DS:[401050]
004A115F MOV EDX, EAX
004A1161
LEA ECX, DWORD PTR SS:[EBP-38]
004A1164 CALL
ESI
004A1166 MOV EAX, 1
004A116B ADD
AX, WORD PTR SS:[EBP-20]
004A116F JO 004A1249
004A1175
MOV DWORD PTR SS:[EBP-20], EAX
004A1178 JMP
004A0F11
004A117D LEA ECX, DWORD PTR SS:[EBP-44]
004A1180
MOV DWORD PTR SS:[EBP-90], ECX
004A1186 >MOV
DWORD PTR SS:[EBP-98], 4008
004A1190 LEA EDX, DWORD
PTR SS:[EBP-98]
004A1196 PUSH EDX
004A1197 LEA
EAX, DWORD PTR SS:[EBP-58]
004A119A PUSH EAX
004A119B
CALL DWORD PTR DS:[4010A4]
004A11A1
LEA ECX, DWORD PTR SS:[EBP-58]
004A11A4 PUSH
ECX
004A11A5 CALL EDI
004A11A7 MOV
EDX, EAX
; EAX=”789454902“
004A11A9
LEA ECX, DWORD PTR SS:[EBP-44]
004A11AC CALL
ESI
004A11AE LEA ECX, DWORD PTR SS:[EBP-58]
004A11B1
CALL DWORD PTR DS:[401020]
004A11B7
LEA EDX, DWORD PTR SS:[EBP-44]
004A11BA PUSH
EDX
004A11BB CALL 004A0A10
004A11C0 MOV
EDX, EAX
004A11C2 LEA ECX, DWORD PTR SS:[EBP-44]
004A11C5
CALL ESI
004A11C7 MOV EDX, DWORD PTR
SS:[EBP-44]
004A11CA LEA ECX, DWORD PTR SS:[EBP-40]
004A11CD
CALL DWORD PTR DS:[401184]
004A11D3
CALL DWORD PTR DS:[401074]
<--以上把”789454902“二个一组,然后把每组的值变成16进制值连接后成为(4E 5E 36 5A)
004A11D9 WAIT
004A11DA
PUSH 4A1233
004A11DF JMP SHORT 004A1218
004A11E1 TEST
BYTE PTR SS:[EBP-C], 4
004A11E5 JE SHORT 004A11F0
004A11E7 LEA
ECX, DWORD PTR SS:[EBP-40]
004A11EA CALL DWORD PTR
DS:[401204]
004A11F0 LEA ECX, DWORD
PTR SS:[EBP-48]
004A11F3 CALL DWORD PTR DS:[401200]
004A11F9 LEA EAX, DWORD PTR SS:[EBP-88]
004A11FF
PUSH EAX
004A1200 LEA ECX, DWORD PTR
SS:[EBP-78]
004A1203 PUSH ECX
004A1204 LEA
EDX, DWORD PTR SS:[EBP-68]
004A1207 PUSH EDX
004A1208
LEA EAX, DWORD PTR SS:[EBP-58]
004A120B PUSH
EAX
004A120C PUSH 4
004A120E CALL
DWORD PTR DS:[401034]
004A1214 ADD
ESP, 14
004A1217 RETN
--------------------------------
|
004AA611
MOV EDX, EAX
; EAX<--00149164,(4E 5E 36 5A 00)
004AA613
LEA ECX, DWORD PTR SS:[EBP-18]
004AA616 CALL
EBX
004AA618 LEA ECX, DWORD PTR SS:[EBP-2C]
004AA61B
CALL DWORD PTR DS:[401204]
004AA621
MOV ECX, DWORD PTR SS:[EBP-18]
; ECX<--00149164,(4E 5E 36 5A)<--通过计算得到的值
004AA624 MOV EDX, DWORD PTR SS:[EBP-24]
; EDX<--0015CCB4,(UNICODE "59622746") <--用户码
004AA627
PUSH ECX
004AA628 PUSH EDX
004AA629
CALL DWORD PTR DS:[4010DC] <-- 注册码正确性比较,即上面的二个参数相同
===>F8
------注册码正确性比较,即上面的二个参数相同-----
|
77A14331
MOV EDI, DWORD PTR SS:[EBP+C] ; EDI=0013D9DC
<--37
77A14334 MOV ESI, DWORD PTR SS:[EBP+8]
; ESI=0013DB14 <--31
77A14337 MOV ECX, DWORD
PTR SS:[EBP+10]
77A1433A XOR EAX, EAX
77A1433C REPE
CMPS WORD PTR ES:[EDI], WORD>; <--这里进行比较
77A1433F JE
SHORT 77A14346
; OLEAUT32.77A14346
77A14341 SBB EAX, EAX
77A14343
SBB EAX, -1
<--赋失败标志
77A14346 TEST EAX,
EAX
77A14348 JG SHORT 77A1437D
; OLEAUT32.77A1437D
77A1434A JGE
SHORT 77A14350 ; OLEAUT32.77A14350
77A1434C
XOR EAX, EAX
<--赋成功标志
77A1434E JMP SHORT 77A143AB
; OLEAUT32.77A143AB
-------------------------------
|
004AA62F
TEST EAX, EAX
004AA631 JNZ 004AA7DC
; 关键的跳转
========================================================================
到这里算法跟踪完成,总结一下。
注册码由二组组成,依据 004A0FAE JNZ
004A1151 这个跳转>8 <11时进入下面的计算核心。
不然就出错,注册码每组的长度是八位或者是10位,中间用“-”连接。
注册码的计算方法:
1.用试验码的16进制值 XOR 4CD(字符串计算出来的常数)
2.把上面得到的值变换成10进制
3.把上面的10进制值每二个一组,然后把每组的值转变成16进制,就是用户码
由于算法比较简单,就是16进制和10进制的转换和 XOR 操作,所以可逆还是比较简单的。
1.把用户码的每位的hex值转变成10进制值
2.把转换的字符串分成二部分
3.把第一部分的值转变成16进制 XOR 4CD(1229D) ,然后再转变成10进制就是注册码的第一部分
4.把第二部分的值转变成16进制 XOR 238F(9103D) ,然后再转变成10进制就是注册码的第二部分
5.用连接号‘-’连接后就是注册码
==================================================================
注册机源码:
---VB6.0编译通过----
Dim
j As Integer
Dim k As Integer
Dim c As Integer
Dim d As Integer
Dim
e As Integer
Dim f As Integer
Dim g As Integer
Dim i As Integer
Dim
h As Integer
Dim l As Integer
Dim edx As String
Dim ebx As Long
Dim
eax As Long
Dim ecx As String
Dim startin As String '以上定义变量及变量类型
startin
= Text2.Text '变量startin接收输入的数据
nlen = Len(startin) '取输入数据的长度
If
nlen < 8 Then '如果小于八位就不正确
h = MsgBox("你还没有输入用户码,或者长度没有八位,请核对后重新输入")
GoTo
tc '结束
Else:
End
If
c = AscB(Mid(startin,
1))
d = AscB(Mid(startin, 2))
e = AscB(Mid(startin, 3))
f = AscB(Mid(startin,
4))
g = AscB(Mid(startin, 5))
h = AscB(Mid(startin, 6))
i = AscB(Mid(startin,
7))
j = AscB(Mid(startin, 8)) '用asc函数取每位的ascii码的10进制值
eax
= c * CLng(1000000) + d * CLng(10000) + e * CLng(100) + f '按位连接前四位
ebx
= g * CLng(1000000) + h * CLng(10000) + i * CLng(100) + j '按位连接后四位
ecx
= eax Xor 1229 'VB不要转换,直接用。
edx = ebx Xor 9103
'VB不要转换,直接用。
Text1.Text = ecx + "-" + edx '连接成注册码
tc: End Sub
有个问题请教,谢谢:
1.如果用户码是10,eax的值超出long类型,就无法计算。所以这里只能计算用户码是
八位的注册码。
2.C怎么实现。
by
fxyang[OCN][BCG]
2003.4.27