老文章档案 · 2003 年

瑞科英语通 V3.0 算法分析

破解教程 · 算法分析 · 2003-08-06 · 作者:fxyang 人气: · 出处:赢政天下整理收藏)

瑞科英语通 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

(出处:赢政天下整理收藏)

相关文章:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史