老文章档案 · 2003 年

Active Ebook Compiler的注册算法

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-06-09 · 作者:henryw 人气: · 出处:赢政天下收集整理)

[软件名称]

ACTIVEBOOK COMPILER 4.01

[下载地址]

http://www.ans2000.com/

感觉上和做成chm没什么特别大的区别。无非是变成了exe文件,变成共享文件(I hate it!),用

VBScript或者JAVAScript 编辑起来会更容易一点。不过它的Search功能可远远不如chm的。不过也算是

一个不错的东东了。

下面是Active Ebook Compiler的注册算法,如有不当指出,请大家指正。

注册码分两部分,和注册时填入的方式是一样的。

1. 数字部分,8位

2. 字母部分,9位

数字4-8位的计算需要查表,表的位置在49547C - 4956BB。

字母部分计算完成后会将顺序倒转。

注册成功后注册信息会写入window目录下面的asn2000.ini文件中。

* Referenced by a CALL at Addresses:

|:0041035A , :0041AB95 , :0041FEDA , :00437FE0

|

:0042AD00 81EC00010000 sub esp, 00000100

:0042AD06 53 push ebx

:0042AD07 56 push esi

:0042AD08 8BB4240C010000 mov esi, dword ptr [esp+0000010C] <--- UserID,5位

:0042AD0F B90A000000 mov ecx, 0000000A <--- A放入ecx

:0042AD14 C744240800000000 mov [esp+08], 00000000

:0042AD1C 6A00 push 00000000

:0042AD1E 8D4601 lea eax, dword ptr [esi+01] <--- nc+1放入eax

:0042AD21 56 push esi

:0042AD22 99 cdq

:0042AD23 F7F9 idiv ecx <--- eax除以ecx,余数在edx

:0042AD25 B840420F00 mov eax, 000F4240

:0042AD2A 6A08 push 00000008

:0042AD2C 2BC6 sub eax, esi <--- F4240 - UserID 放在eax

:0042AD2E 80C230 add dl, 30

:0042AD31 88542414 mov byte ptr [esp+14], dl <--- 数字部分第1位

:0042AD35 99 cdq

:0042AD36 F7F9 idiv ecx <--- eax除以ecx,余数在edx

:0042AD38 8D0476 lea eax, dword ptr [esi+2*esi] <--- 3*UserID放入eax,

:0042AD3B 80C230 add dl, 30

:0042AD3E 88542415 mov byte ptr [esp+15], dl <--- 数字部分第2位

:0042AD42 99 cdq

:0042AD43 F7F9 idiv ecx <--- eax除以ecx,余数在edx

:0042AD45 80C230 add dl, 30

:0042AD48 88542416 mov byte ptr [esp+16], dl <--- 数字部分第3位

:0042AD4C 8D542414 lea edx, dword ptr [esp+14]

:0042AD50 52 push edx

:0042AD51 E81AECFFFF call 00429970 <--------计算其余的数字部分

:0042AD56 6A00 push 00000000

:0042AD58 8D442424 lea eax, dword ptr [esp+24]

:0042AD5C 6A08 push 00000008

:0042AD5E 50 push eax

:0042AD5F 56 push esi

:0042AD60 E86BEAFFFF call 004297D0 <--------计算字母部分

:0042AD65 8BB42430010000 mov esi, dword ptr [esp+00000130]

:0042AD6C 83C420 add esp, 00000020

:0042AD6F 8D442408 lea eax, dword ptr [esp+08]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0042AD95(C)

|

:0042AD73 8A10 mov dl, byte ptr [eax]

:0042AD75 8A1E mov bl, byte ptr [esi]

:0042AD77 8ACA mov cl, dl

:0042AD79 3AD3 cmp dl, bl

:0042AD7B 752E jne 0042ADAB

:0042AD7D 84C9 test cl, cl

:0042AD7F 7416 je 0042AD97

:0042AD81 8A5001 mov dl, byte ptr [eax+01]

:0042AD84 8A5E01 mov bl, byte ptr [esi+01]

:0042AD87 8ACA mov cl, dl

:0042AD89 3AD3 cmp dl, bl

:0042AD8B 751E jne 0042ADAB

:0042AD8D 83C002 add eax, 00000002

:0042AD90 83C602 add esi, 00000002

:0042AD93 84C9 test cl, cl

:0042AD95 75DC jne 0042AD73

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0042AD7F(C)

|

:0042AD97 33C0 xor eax, eax

:0042AD99 33C9 xor ecx, ecx

:0042AD9B 85C0 test eax, eax

:0042AD9D 0F94C1 sete cl

:0042ADA0 5E pop esi

:0042ADA1 8BC1 mov eax, ecx

:0042ADA3 5B pop ebx

:0042ADA4 81C400010000 add esp, 00000100

:0042ADAA C3 ret

-------------------------------------------------------------------------------------

数字部分4-8位的计算:

* Referenced by a CALL at Addresses:

|:0042AD51 , :0042AEB7 , :0042AF87 , :0042B051 , :0042B127

|:0042B1F1 , :0042B308 , :0042B3D1 , :0042B4A7 , :0042B571

|:0042B641 , :0042B7A7 , :0042B877 , :0042B941 , :0042BA14

|:0042BAE7 , :0042BBB1 , :0042BCC8 , :0042BD91 , :0042BE67

|:0042BF31

|

:00429970 8B44240C mov eax, dword ptr [esp+0C] <----- UserID放入eax

:00429974 2507000080 and eax, 80000007

:00429979 7905 jns 00429980 <----- 正数的话就跳

:0042997B 48 dec eax

:0042997C 83C8F8 or eax, FFFFFFF8

:0042997F 40 inc eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00429979(C)

|

:00429980 8B4C2408 mov ecx, dword ptr [esp+08] <----- 8放入ecx

:00429984 8D14C8 lea edx, dword ptr [eax+8*ecx] <----- eax+8*8放入edx

:00429987 8B442404 mov eax, dword ptr [esp+04]

:0042998B 80C130 add cl, 30

:0042998E 8D14957C544900 lea edx, dword ptr [4*edx+0049547C] <---- edx中是表地址

:00429995 884803 mov byte ptr [eax+03], cl <---- 数字部分第4位

:00429998 8A0A mov cl, byte ptr [edx] <---- 表的内容,送一个字节进cl

:0042999A 884804 mov byte ptr [eax+04], cl <---- 数字部分第5位

:0042999D 8A4A01 mov cl, byte ptr [edx+01]

:004299A0 884805 mov byte ptr [eax+05], cl <---- 数字部分第6位

:004299A3 8A4C2410 mov cl, byte ptr [esp+10]

:004299A7 8A5202 mov dl, byte ptr [edx+02]

:004299AA 80C130 add cl, 30

:004299AD 885006 mov byte ptr [eax+06], dl <---- 数字部分第7位

:004299B0 884807 mov byte ptr [eax+07], cl <---- 数字部分第8位

:004299B3 8A5004 mov dl, byte ptr [eax+04] <-----------------------------

:004299B6 8A08 mov cl, byte ptr [eax] <- (5)<->(1),第5位和第1位换位置

:004299B8 8810 mov byte ptr [eax], dl <-

:004299BA 884804 mov byte ptr [eax+04], cl <-----------------------------

:004299BD 8A5005 mov dl, byte ptr [eax+05] <---- (6)<->(2)

:004299C0 8A4801 mov cl, byte ptr [eax+01]

:004299C3 885001 mov byte ptr [eax+01], dl

:004299C6 884805 mov byte ptr [eax+05], cl

:004299C9 8A5006 mov dl, byte ptr [eax+06] <---- (7)<->(3)

:004299CC 8A4802 mov cl, byte ptr [eax+02]

:004299CF 885002 mov byte ptr [eax+02], dl

:004299D2 884806 mov byte ptr [eax+06], cl

:004299D5 C3 ret

-----------------------------------------------------------------------------------

字母部分计算:

* Referenced by a CALL at Addresses:

|:00429761 , :00429AB0 , :00429C16 , :00429CE6 , :00429DB0

|:00429E86 , :00429F50 , :0042A067 , :0042A130 , :0042A206

|:0042A2D0 , :0042A3A0 , :0042A506 , :0042A5D6 , :0042A6A0

|:0042A773 , :0042A846 , :0042A910 , :0042AA27 , :0042AAF0

|:0042ABC6 , :0042AC90 , :0042AD60 , :0042AEC6 , :0042AF96

|:0042B060 , :0042B136 , :0042B200 , :0042B317 , :0042B3E0

|:0042B4B6 , :0042B580 , :0042B650 , :0042B7B6 , :0042B886

|:0042B950 , :0042BA23 , :0042BAF6 , :0042BBC0 , :0042BCD7

|:0042BDA0 , :0042BE76 , :0042BF40

|

:004297D0 81EC1C010000 sub esp, 0000011C

:004297D6 8B842420010000 mov eax, dword ptr [esp+00000120]

:004297DD 53 push ebx

:004297DE 56 push esi

:004297DF 57 push edi

:004297E0 50 push eax

:004297E1 8D4C242C lea ecx, dword ptr [esp+2C]

* Possible StringData Ref from Data Obj ->"%05d"

|

:004297E5 687C594900 push 0049597C

:004297EA 51 push ecx

:004297EB E88E820100 call 00441A7E

:004297F0 8A5C2437 mov bl, byte ptr [esp+37] <--- UserID字串第(4)位

:004297F4 8A4C2434 mov cl, byte ptr [esp+34] <--- UserID字串第(1)位

:004297F8 8A542435 mov dl, byte ptr [esp+35] <--- UserID字串第(2)位

:004297FC 80EB30 sub bl, 30

:004297FF 80E930 sub cl, 30

:00429802 885C242F mov byte ptr [esp+2F], bl <--- 保存到esp+2F处,下面用到。

:00429806 8A5C2438 mov bl, byte ptr [esp+38] <--- UserID字串第(5)位

:0042980A 80C14A add cl, 4A

:0042980D 8A442436 mov al, byte ptr [esp+36] <--- UserID字串第(3)位

:00429811 80EB30 sub bl, 30

:00429814 884C2419 mov byte ptr [esp+19], cl <--- 字母部分第(2)位

:00429818 80EA30 sub dl, 30

:0042981B B15A mov cl, 5A

:0042981D 885C2430 mov byte ptr [esp+30], bl <--- 保存到esp+30处,下面用到。

:00429821 80C34C add bl, 4C

:00429824 2ACA sub cl, dl

:00429826 885C2418 mov byte ptr [esp+18], bl <--- 字母部分第(1)位

:0042982A 8A5C242F mov bl, byte ptr [esp+2F]

:0042982E 884C241A mov byte ptr [esp+1A], cl <--- 字母部分第(3)位

:00429832 B158 mov cl, 58

:00429834 2ACB sub cl, bl

:00429836 2C30 sub al, 30

:00429838 884C241B mov byte ptr [esp+1B], cl <--- 字母部分第(4)位

:0042983C 8AC8 mov cl, al

:0042983E 80C141 add cl, 41

:00429841 8A5C2430 mov bl, byte ptr [esp+30]

:00429845 884C241C mov byte ptr [esp+1C], cl <--- 字母部分第(5)位

:00429849 B153 mov cl, 53

:0042984B 2ACA sub cl, dl

:0042984D 044B add al, 4B

:0042984F 884C241D mov byte ptr [esp+1D], cl <--- 字母部分第(6)位

:00429853 8844241E mov byte ptr [esp+1E], al <--- 字母部分第(7)位

:00429857 B059 mov al, 59

:00429859 B158 mov cl, 58

:0042985B 2AC3 sub al, bl

:0042985D 2ACA sub cl, dl

:0042985F 8844241F mov byte ptr [esp+1F], al <--- 字母部分第(8)位

:00429863 8B842440010000 mov eax, dword ptr [esp+00000140]

:0042986A 884C2420 mov byte ptr [esp+20], cl <--- 字母部分第(9)位

:0042986E 8B8C2444010000 mov ecx, dword ptr [esp+00000144]

:00429875 83C40C add esp, 0000000C

:00429878 3BC1 cmp eax, ecx

:0042987A C644241500 mov [esp+15], 00

:0042987F 743A je 004298BB

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004298B9(C)

|

:00429881 85C0 test eax, eax

:00429883 7C1E jl 004298A3

:00429885 83F808 cmp eax, 00000008

:00429888 7F19 jg 004298A3

:0042988A 85C9 test ecx, ecx

:0042988C 7C15 jl 004298A3

:0042988E 83F908 cmp ecx, 00000008

:00429891 7F10 jg 004298A3

:00429893 8A5C0C0C mov bl, byte ptr [esp+ecx+0C] <--- 准备将刚才生成的字母的顺序倒过来。

:00429897 8A54040C mov dl, byte ptr [esp+eax+0C]

:0042989B 885C040C mov byte ptr [esp+eax+0C], bl

:0042989F 88540C0C mov byte ptr [esp+ecx+0C], dl

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00429883(C), :00429888(C), :0042988C(C), :00429891(C)

|

:004298A3 48 dec eax

:004298A4 41 inc ecx

:004298A5 85C0 test eax, eax

:004298A7 7C12 jl 004298BB

:004298A9 83F808 cmp eax, 00000008

:004298AC 7F0D jg 004298BB

:004298AE 85C9 test ecx, ecx

:004298B0 7C09 jl 004298BB

:004298B2 83F908 cmp ecx, 00000008

:004298B5 7F04 jg 004298BB

:004298B7 3BC1 cmp eax, ecx

:004298B9 75C6 jne 00429881

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:0042987F(C), :004298A7(C), :004298AC(C), :004298B0(C), :004298B5(C)

|

:004298BB 8D7C240C lea edi, dword ptr [esp+0C]

:004298BF 83C9FF or ecx, FFFFFFFF

:004298C2 33C0 xor eax, eax

:004298C4 F2 repnz

:004298C5 AE scasb

:004298C6 F7D1 not ecx

:004298C8 2BF9 sub edi, ecx

:004298CA 8BD1 mov edx, ecx

:004298CC 8BF7 mov esi, edi

:004298CE 8BBC2430010000 mov edi, dword ptr [esp+00000130]

:004298D5 C1E902 shr ecx, 02

:004298D8 F3 repz

:004298D9 A5 movsd

:004298DA 8BCA mov ecx, edx

:004298DC 83E103 and ecx, 00000003

:004298DF F3 repz

:004298E0 A4 movsb

:004298E1 5F pop edi

:004298E2 5E pop esi

:004298E3 5B pop ebx

:004298E4 81C41C010000 add esp, 0000011C

:004298EA C3 ret

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

相关文章:

·ASProtect的加密算法初步分析

·MD5算法研究

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

·简单算法——小护士 V1.2

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

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

·加密算法之RSA算法

·加密算法之DES算法

·加密算法之ElGamal算法

·加密算法之DSA算法

相关软件:

·胜新通用人事工资管理系统 V5.01注册码算法

·胜新出纳-支票打印软件 V4.0X 的注册码算法

·胜新现代办公百宝箱 V5.01 的注册码算法

·胜新信函宝典-信封打印软件 V2.02 注册码的算法

·胜新通用企业计划管理系统的注册码算法

·共享软件加密算法库 2.5

·操作系统内存分配银行家算法模拟系统 XP

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

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

Powered

by:MeSky.Net

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

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

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