老文章档案 · 2003 年

OfficeCenter4.2增强版注册程序

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

1、软件授权形式:试用版

2、软件下载地址http://www.mindsware.com/download/officecenter42.rar

3、软件大小 :15.4M

4、软件介绍 ∶ASP+Sql,是目前市场能够见到最好的ASP开发的办公平台,功能很全。大部

分没有限制,公开源代码

5、目的:学习,研究 ;软件保护算法何CryptoAPI在软件保护中的应用和破解方法。

6、工具:SmartCheck

以前fxyang大虾的研究见

http://tongtian.net/cgi-bin/topic.cgi?forum=19&;topic=2128&show=25

《浅谈用Ollydbg跟踪vb程序-soli 兄弟的问题 》精华贴

已收录在《看雪论坛精华5》中,已经很深入,不过因为感觉麻烦,呵呵,放弃了。

Start:

开始研究OfficeCenter的时候,还没有看到fxyang大虾的帖子,由于刚入门研究了好几天也没进展,在我最近的帖子http://tongtian.net/cgi-bin/topic.cgi?forum=19&;topic=3736&show=50,记录了研究过程。

如果只想得到注册码十分简单,Smartcheck一定要配置好,以前有这样的贴子可以参考,否则会产生大量的无用信息,如鼠标移动事件。用SmartCheck跟踪到Strcomp函数,查看右边列框的字符串就可以看到正确的和错误的两个注册码。

下面主要研究的是它的算法,Register.exe中用到微软的CryptoAPI2.0函数,下面具体论述。

用SmartCheck打开register.exe运行或按F5

首先,产生窗体LOAD事件,依次调用如下函数,细一点就是算法:

1、 CryAcquireContextA:微软CryptoAPI2.0设置环境函数,在使用系列加密函数之前必须使用此函数设置环境,具体可参考msdn或搜索引擎。

2、GetwindowsDirectoryA:获得本机windows路径,我的机器是“C:\WINNT”。

3、GetVolumeInformationA:获得本机指定盘卷标,这里是“C:\”盘,我的机器是“-790736510”,并和前面的字符串组合为“C:\WINNT -790736510”,连空格共19个字符,符,每台机器都不相同 。

4、Mid()->ASC()->Byte():逐个取字符,转化为十进制ASCII码,转化为一个字节,即二进制。作为CryptHashData的参数,必须二进制

6、把ASCII码101-125,即"efghijklmnopqrstuvwxyz{|}"共25个字符转化为二进制,供CryptEnCrypt调用,作为要加密的数据,必须二进制。

下面是调用CryptoAPI函数

7、CryptCreateHash:设置散列算法,第二个参数Algid=32772代表sha1散列算法,可在wincrypt.h和MQOAI.h中,搜到相关的定义,如 MQMSG_CALG_MD5 = 32771,MQMSG_CALG_SHA = 32772等。

8、CryptHashData:建立输入字符串“C:\WINNT -790736510”的散列表。第二个参数代表该字符串。

9、CryptDeriveKey:从散列表中派生会话密钥,第二个参数Algid=26625,即CALG_RC4,代表流式加密,CALG_RC2(26114)代表块加密;第三个参数,就是我们得到的hash值句柄。只要我们每次保证CSP、算法、基础数据一样,产生的会话密钥pkey也一样。

10、CryptEnCrypt:按我们提供的算法和密钥加密指定的数据,得到加密数据。我的机器

的结果是(十六进制)--

11、以第10步得到的加密数据为索引,用Mid函数自“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"按位置取得字母,并五个一组

Sqr(25)=5。组之间加上"-",这样就取得我的机器的ID="QZB00-PI2UG-M36PG-JUMXI-VZRCH"。

生成序列号的算法

下面叙述一下由得到的ID号生成序列号的算法:

1、上述第4步,把“C:\WINNT -790736510”换为ID号"QZB00-PI2UG-M36PG-JUMXI-VZRCH"。

2、 第5步,"efghijklmnopqrstuvwxyz{|}"换为“OfficeCenterFromMindswareMadeByKenny”。

3、执行6、7、8、9、10,得到一加密后数据。

4、以上步得到的加密数据为索引,用Mid函数自“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc“按位置取得字母,并五个一组Sqr(25)=5。组之间加上"-",这样就取得我的机器的序列号="PoG6L-lp535-W2z81-Ly9ju-LL13a"。

没有解决的问题:第3步至第4部中有加密后的二进制如何得到索引值,还没有研究透彻,需要跟踪一下程序。哪位大虾帮忙跟踪一下,我用工具不太熟,呵呵。

结论:如果要写注册机,上述的生成序列号算法中已基本实现,而且我已经写好演示程序,是VC源代码,大家修改一下输入数据编译一下即可,等我找到了第4步的换算方式,再来写注册机,呵呵。

唉,上传文件失败,要CryptoAPI程序的留下E-mail吧。

终于找到了他的算法,哈哈,暴露无疑。

软件作者很鬼的,多次调用CryptAPI函数而且并不使用,设置障碍。开始的时候就被他蒙蔽了,跟着转了两天(可是包括夜晚的哦,呵呵)

00404776 . E8 15E6FFFF CALL Register.00402D90 ; 调用CryptEnCrypt04

0040477B . 8985 38FFFFFF MOV DWORD PTR SS:[EBP-C8],EAX

00404781 . FF15 30104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaSetSy>; MSVBVM60.__vbaSetSystemError

00404787 . 39B5 38FFFFFF CMP DWORD PTR SS:[EBP-C8],ESI

0040478D . 0F84 62050000 JE Register.00404CF5

00404793 . BA 482F4000 MOV EDX,Register.00402F48

00404798 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]

0040479B . FF15 D0104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCo>; MSVBVM60.__vbaStrCopy

004047A1 . 8B1D 14114000 MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrMove

004047A7 . 33FF XOR EDI,EDI

004047A9 > B8 18000000 MOV EAX,18

004047AE . 3BF8 CMP EDI,EAX

004047B0 . 0F8F 17050000 JG Register.00404CCD

004047B6 . 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]

004047B9 . 8BF7 MOV ESI,EDI

004047BB . 83C6 02 ADD ESI,2

004047BE . 8985 44FFFFFF MOV DWORD PTR SS:[EBP-BC],EAX

004047C4 . 0F80 B2050000 JO Register.00404D7C

004047CA . 81FE C9000000 CMP ESI,0C9

004047D0 . C785 3CFFFFFF >MOV DWORD PTR SS:[EBP-C4],8

004047DA . C745 94 010000>MOV DWORD PTR SS:[EBP-6C],1

004047E1 . C745 8C 020000>MOV DWORD PTR SS:[EBP-74],2

004047E8 . 72 06 JB SHORT Register.004047F0

004047EA . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

004047F0 > 8BC7 MOV EAX,EDI

004047F2 . 83C0 03 ADD EAX,3

004047F5 . 0F80 81050000 JO Register.00404D7C

004047FB . 3D C9000000 CMP EAX,0C9

00404800 . 8985 30FFFFFF MOV DWORD PTR SS:[EBP-D0],EAX

00404806 . 72 06 JB SHORT Register.0040480E

00404808 . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

0040480E > 8D95 5CFFFFFF LEA EDX,DWORD PTR SS:[EBP-A4]

00404814 . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]

00404817 . C785 64FFFFFF >MOV DWORD PTR SS:[EBP-9C],Register.00402>; UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

00404821 . C785 5CFFFFFF >MOV DWORD PTR SS:[EBP-A4],8

0040482B . FF15 F4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup

00404831 . 8B45 CC MOV EAX,DWORD PTR SS:[EBP-34] ; 第一个值,算法开始。装入初始数R SS:[EBP-34]

00404834 . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]

00404837 . 51 PUSH ECX

00404838 . 66:33C9 XOR CX,CX

0040483B . 8A1430 MOV DL,BYTE PTR DS:[EAX+ESI]

0040483E . 80E2 03 AND DL,3

00404841 . 8ACA MOV CL,DL

00404843 . 8B95 30FFFFFF MOV EDX,DWORD PTR SS:[EBP-D0]

00404849 . 66:6BC9 10 IMUL CX,CX,10

0040484D . 8A0410 MOV AL,BYTE PTR DS:[EAX+EDX]

00404850 . 0F80 26050000 JO Register.00404D7C

00404856 . C0E8 04 SHR AL,4

00404859 . 66:33D2 XOR DX,DX

0040485C . 8AD0 MOV DL,AL

0040485E . 0BCA OR ECX,EDX

00404860 . 8D95 7CFFFFFF LEA EDX,DWORD PTR SS:[EBP-84]

00404866 . 66:83C1 01 ADD CX,1

0040486A . 0F80 0C050000 JO Register.00404D7C

00404870 . 0FBFC1 MOVSX EAX,CX

00404873 . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]

00404876 . 50 PUSH EAX

00404877 . 51 PUSH ECX

00404878 . 52 PUSH EDX

00404879 . FF15 60104000 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar

0040487F . 8D85 3CFFFFFF LEA EAX,DWORD PTR SS:[EBP-C4]

00404885 . 8D8D 7CFFFFFF LEA ECX,DWORD PTR SS:[EBP-84]

0040488B . 50 PUSH EAX

0040488C . 8D95 6CFFFFFF LEA EDX,DWORD PTR SS:[EBP-94]

00404892 . 51 PUSH ECX

00404893 . 52 PUSH EDX

00404894 . FF15 EC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarAd>; MSVBVM60.__vbaVarAdd

0040489A . 50 PUSH EAX

0040489B . FF15 14104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>; MSVBVM60.__vbaStrVarMove

004048A1 . 8BD0 MOV EDX,EAX

004048A3 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]

004048A6 . FFD3 CALL EBX

004048A8 . 8D85 6CFFFFFF LEA EAX,DWORD PTR SS:[EBP-94]

004048AE . 8D8D 7CFFFFFF LEA ECX,DWORD PTR SS:[EBP-84]

004048B4 . 50 PUSH EAX

004048B5 . 8D55 8C LEA EDX,DWORD PTR SS:[EBP-74]

004048B8 . 51 PUSH ECX

004048B9 . 8D45 9C LEA EAX,DWORD PTR SS:[EBP-64]

004048BC . 52 PUSH EDX

004048BD . 50 PUSH EAX

004048BE . 6A 04 PUSH 4

004048C0 . FF15 18104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList

004048C6 . 8B4D D8 MOV ECX,DWORD PTR SS:[EBP-28]

004048C9 . 8BF7 MOV ESI,EDI

004048CB . 83C4 14 ADD ESP,14

004048CE . 83C6 03 ADD ESI,3

004048D1 . 0F80 A5040000 JO Register.00404D7C

004048D7 . 81FE C9000000 CMP ESI,0C9

004048DD . 898D 44FFFFFF MOV DWORD PTR SS:[EBP-BC],ECX

004048E3 . C785 3CFFFFFF >MOV DWORD PTR SS:[EBP-C4],8

004048ED . C745 94 010000>MOV DWORD PTR SS:[EBP-6C],1

004048F4 . C745 8C 020000>MOV DWORD PTR SS:[EBP-74],2

004048FB . 72 06 JB SHORT Register.00404903

004048FD . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

00404903 > 8BC7 MOV EAX,EDI

00404905 . 83C0 04 ADD EAX,4

00404908 . 0F80 6E040000 JO Register.00404D7C

0040490E . 3D C9000000 CMP EAX,0C9

00404913 . 8985 30FFFFFF MOV DWORD PTR SS:[EBP-D0],EAX

00404919 . 72 06 JB SHORT Register.00404921

0040491B . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

00404921 > 8D95 5CFFFFFF LEA EDX,DWORD PTR SS:[EBP-A4]

00404927 . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]

0040492A . C785 64FFFFFF >MOV DWORD PTR SS:[EBP-9C],Register.00402>; UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

00404934 . C785 5CFFFFFF >MOV DWORD PTR SS:[EBP-A4],8

0040493E . FF15 F4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup

00404944 . 8B45 CC MOV EAX,DWORD PTR SS:[EBP-34] ; 第二个值,另一种算法RD PTR SS

00404947 . 8D55 8C LEA EDX,DWORD PTR SS:[EBP-74]

0040494A . 52 PUSH EDX

0040494B . 66:33D2 XOR DX,DX

0040494E . 8A0C30 MOV CL,BYTE PTR DS:[EAX+ESI]

00404951 . 80E1 0F AND CL,0F

00404954 . 8AD1 MOV DL,CL

00404956 . 8B8D 30FFFFFF MOV ECX,DWORD PTR SS:[EBP-D0]

0040495C . 66:6BD2 04 IMUL DX,DX,4

00404960 . 8A0408 MOV AL,BYTE PTR DS:[EAX+ECX]

00404963 . 0F80 13040000 JO Register.00404D7C

00404969 . C0E8 06 SHR AL,6

0040496C . 66:33C9 XOR CX,CX

0040496F . 8AC8 MOV CL,AL

00404971 . 8D45 9C LEA EAX,DWORD PTR SS:[EBP-64]

00404974 . 0BD1 OR EDX,ECX

00404976 . 8D8D 7CFFFFFF LEA ECX,DWORD PTR SS:[EBP-84]

0040497C . 66:83C2 01 ADD DX,1

00404980 . 0F80 F6030000 JO Register.00404D7C

00404986 . 0FBFD2 MOVSX EDX,DX

00404989 . 52 PUSH EDX

0040498A . 50 PUSH EAX

0040498B . 51 PUSH ECX

0040498C . FF15 60104000 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar

00404992 . 8D95 3CFFFFFF LEA EDX,DWORD PTR SS:[EBP-C4]

00404998 . 8D85 7CFFFFFF LEA EAX,DWORD PTR SS:[EBP-84]

0040499E . 52 PUSH EDX

0040499F . 8D8D 6CFFFFFF LEA ECX,DWORD PTR SS:[EBP-94]

004049A5 . 50 PUSH EAX

004049A6 . 51 PUSH ECX

004049A7 . FF15 EC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarAd>; MSVBVM60.__vbaVarAdd

004049AD . 50 PUSH EAX

004049AE . FF15 14104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>; MSVBVM60.__vbaStrVarMove

004049B4 . 8BD0 MOV EDX,EAX

004049B6 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]

004049B9 . FFD3 CALL EBX

004049BB . 8D95 6CFFFFFF LEA EDX,DWORD PTR SS:[EBP-94]

004049C1 . 8D85 7CFFFFFF LEA EAX,DWORD PTR SS:[EBP-84]

004049C7 . 52 PUSH EDX

004049C8 . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]

004049CB . 50 PUSH EAX

004049CC . 8D55 9C LEA EDX,DWORD PTR SS:[EBP-64]

004049CF . 51 PUSH ECX

004049D0 . 52 PUSH EDX

004049D1 . 6A 04 PUSH 4

004049D3 . FF15 18104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList

004049D9 . 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]

004049DC . 8BF7 MOV ESI,EDI

004049DE . 83C4 14 ADD ESP,14

004049E1 . 83C6 04 ADD ESI,4

004049E4 . 0F80 92030000 JO Register.00404D7C

004049EA . 81FE C9000000 CMP ESI,0C9

004049F0 . 8985 44FFFFFF MOV DWORD PTR SS:[EBP-BC],EAX

004049F6 . C785 3CFFFFFF >MOV DWORD PTR SS:[EBP-C4],8

00404A00 . C745 94 010000>MOV DWORD PTR SS:[EBP-6C],1

00404A07 . C745 8C 020000>MOV DWORD PTR SS:[EBP-74],2

00404A0E . 72 06 JB SHORT Register.00404A16

00404A10 . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

00404A16 > 8D95 5CFFFFFF LEA EDX,DWORD PTR SS:[EBP-A4]

00404A1C . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]

00404A1F . C785 64FFFFFF >MOV DWORD PTR SS:[EBP-9C],Register.00402>; UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

00404A29 . C785 5CFFFFFF >MOV DWORD PTR SS:[EBP-A4],8

00404A33 . FF15 F4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup

00404A39 . 8B55 CC MOV EDX,DWORD PTR SS:[EBP-34] ; 第三个参数,算法开始RD PTR SS:

00404A3C . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]

00404A3F . 51 PUSH ECX

00404A40 . 66:33C9 XOR CX,CX

00404A43 . 8A0432 MOV AL,BYTE PTR DS:[EDX+ESI]

00404A46 . 24 3F AND AL,3F

00404A48 . 8AC8 MOV CL,AL

00404A4A . 8D45 9C LEA EAX,DWORD PTR SS:[EBP-64]

00404A4D . 66:83C1 01 ADD CX,1

00404A51 . 0F80 25030000 JO Register.00404D7C

..............................

.....................

00404AC7 . 8985 44FFFFFF MOV DWORD PTR SS:[EBP-BC],EAX

00404ACD . C785 3CFFFFFF >MOV DWORD PTR SS:[EBP-C4],8

00404AD7 . C745 94 010000>MOV DWORD PTR SS:[EBP-6C],1

00404ADE . C745 8C 020000>MOV DWORD PTR SS:[EBP-74],2

00404AE5 . 72 06 JB SHORT Register.00404AED

00404AE7 . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

00404AED > 8D95 5CFFFFFF LEA EDX,DWORD PTR SS:[EBP-A4]

00404AF3 . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]

00404AF6 . C785 64FFFFFF >MOV DWORD PTR SS:[EBP-9C],Register.00402>; UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

00404B00 . C785 5CFFFFFF >MOV DWORD PTR SS:[EBP-A4],8

00404B0A . FF15 F4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup

00404B10 . 8B55 CC MOV EDX,DWORD PTR SS:[EBP-34] ; 第四个数开始,DWORD

00404B13 . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]

00404B16 . 51 PUSH ECX

00404B17 . 66:33C9 XOR CX,CX

00404B1A . 8A0432 MOV AL,BYTE PTR DS:[EDX+ESI]

00404B1D . C0E8 02 SHR AL,2

00404B20 . 8AC8 MOV CL,AL

00404B22 . 8D45 9C LEA EAX,DWORD PTR SS:[EBP-64]

00404B25 . 66:83C1 01 ADD CX,1

00404B29 . 0F80 4D020000 JO Register.00404D7C

00404B2F . 0FBFD1 MOVSX EDX,CX

00404B32 . 52 PUSH EDX

00404B33 . 8D8D 7CFFFFFF LEA ECX,DWORD PTR SS:[EBP-84]

00404B39 . 50 PUSH EAX

00404B3A . 51 PUSH ECX

00404B3B . FF15 60104000 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar

00404B41 . 8D95 3CFFFFFF LEA EDX,DWORD PTR SS:[EBP-C4]

00404B47 . 8D85 7CFFFFFF LEA EAX,DWORD PTR SS:[EBP-84]

00404B4D . 52 PUSH EDX

00404B4E . 8D8D 6CFFFFFF LEA ECX,DWORD PTR SS:[EBP-94]

00404B54 . 50 PUSH EAX

00404B55 . 51 PUSH ECX

00404B56 . FF15 EC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarAd>; MSVBVM60.__vbaVarAdd

00404B5C . 50 PUSH EAX

00404B5D . FF15 14104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>; MSVBVM60.__vbaStrVarMove

00404B63 . 8BD0 MOV EDX,EAX

00404B65 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]

00404B68 . FFD3 CALL EBX

00404B6A . 8D95 6CFFFFFF LEA EDX,DWORD PTR SS:[EBP-94]

00404B70 . 8D85 7CFFFFFF LEA EAX,DWORD PTR SS:[EBP-84]

00404B76 . 52 PUSH EDX

00404B77 . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]

00404B7A . 50 PUSH EAX

00404B7B . 8D55 9C LEA EDX,DWORD PTR SS:[EBP-64]

00404B7E . 51 PUSH ECX

00404B7F . 52 PUSH EDX

00404B80 . 6A 04 PUSH 4

00404B82 . FF15 18104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList

00404B88 . 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]

00404B8B . 8BF7 MOV ESI,EDI

00404B8D . 83C4 14 ADD ESP,14

00404B90 . 83C6 06 ADD ESI,6

00404B93 . 0F80 E3010000 JO Register.00404D7C

00404B99 . 81FE C9000000 CMP ESI,0C9

00404B9F . 8985 44FFFFFF MOV DWORD PTR SS:[EBP-BC],EAX

00404BA5 . C785 3CFFFFFF >MOV DWORD PTR SS:[EBP-C4],8

00404BAF . C745 94 010000>MOV DWORD PTR SS:[EBP-6C],1

00404BB6 . C745 8C 020000>MOV DWORD PTR SS:[EBP-74],2

00404BBD . 72 06 JB SHORT Register.00404BC5

00404BBF . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

00404BC5 > 8BC7 MOV EAX,EDI

00404BC7 . 83C0 07 ADD EAX,7

00404BCA . 0F80 AC010000 JO Register.00404D7C

00404BD0 . 3D C9000000 CMP EAX,0C9

00404BD5 . 8985 30FFFFFF MOV DWORD PTR SS:[EBP-D0],EAX

00404BDB . 72 06 JB SHORT Register.00404BE3

00404BDD . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError

00404BE3 > 8D95 5CFFFFFF LEA EDX,DWORD PTR SS:[EBP-A4]

00404BE9 . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]

00404BEC . C785 64FFFFFF >MOV DWORD PTR SS:[EBP-9C],Register.00402>; UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

00404BF6 . C785 5CFFFFFF >MOV DWORD PTR SS:[EBP-A4],8

00404C00 . FF15 F4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup

00404C06 . 8B45 CC MOV EAX,DWORD PTR SS:[EBP-34] ; 第五个数开始计算WORD PTR

00404C09 . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]

00404C0C . 51 PUSH ECX

00404C0D . 66:33C9 XOR CX,CX

.............................

.................

00404D4A . 50 PUSH EAX

00404D4B . 6A 00 PUSH 0

00404D4D . 8995 38FFFFFF MOV DWORD PTR SS:[EBP-C8],EDX

00404D53 . FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaAryDe>; MSVBVM60.__vbaAryDestruct

00404D59 . 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C]

00404D5C . FFD6 CALL ESI

00404D5E . C3 RETN

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

相关文章:

·语音界面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)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史