首页
社区
课程
招聘
MGuard(记忆之门) V1.0 注册算法分析
发表于: 2005-4-16 15:50 7103

MGuard(记忆之门) V1.0 注册算法分析

2005-4-16 15:50
7103

MGuard(记忆之门) V1.0   注册算法分析

 日期:2005年4月16日  破解人:Baby2008
―――――――――――――――――――――――――――――――――――――――――――

【软件名称】:MGuard(记忆之门) V1.0
【软件大小】:2213 KB
【下载地址】:天空软件站2005.04.15 http://www1.skycn.com/soft/22764.html
              或作者老家 http://www.fd-soft.com/

【软件简介】:

MGuard(记忆之门)个人版是一款个人资料库的构建和规划工具。
主要功能:
    1.轻松保存自己喜欢网页;不仅可以保存当前正在浏览的整个网页内容,而且可以保存网页中的图片、Flash动画,还可以根据需要保存选

择的部分内容。
    2.高效方便的资料管理功能;可以像资源管理器一样针对各种类型的资料文件分类整理,提供对目录和文件进行“新增、删除、重命名、

移动”等基本功能轻松管理自己的学习资料。
    3.整合CHM帮助文档,定制自己的“MSDN”;可以将CHM帮助文档按照目录结构完整导入到软件中,使用软件的管理功能可以方便实现多个

CHM格式文档的整合功能,而且查找浏览资料就像使用MSDN一样方便快捷。
    4.强大的导入导出功能方便交流;可以将一个目录单独导出为本软件支持的电子书格式,和朋友、同行分享自己的知识资料。得到其他人

分享的电子书后,只需导入到自己的资料库中就可以轻松阅读。另外软件还支持所有文件格式的导入导出,资料搜集整理更方便。
    5.集编辑浏览于一身的浏览器;使用软件内部集成的浏览器,可以像IE等浏览器一样网上冲浪,利用编辑功能,可以对保存下来的网页进

行修饰,直到达到自己预期的效果。
    6.索引、书签、搜索功能更方便阅读;浏览资料时可以通过索引、书签、搜索等多种方式快速查找自己需要的资料,为您节省更多的宝贵

时间。

【保护方式】:注册码保护
【破解声明】:初学Crack,只是感兴趣,失误之处敬请诸位大侠赐教!
【破解工具】:OllyDbg.V1.10 聆风听雨汉化第二版、PeID 0.93

―――――――――――――――――――――――――――――――――――――――――――

【破解过程】:
先用PEID 0.93汉化增强版查壳,Microsoft Visual C++ 7.0 Method2 [Debug],OD直接载入lover.exe,F9运行,输入注册信息,注册名:

Baby2008,电子邮箱:jw6y8@21cn.com,注册码:1234567890,插件查找参考字符串“注册失败!请查验……”,双击,向上查找来到:
------------------------------------------------------------------------------------------------------
004142B0   .  6A FF            push -1
004142B2   .  68 286A4200      push Lover.00426A28                            ;  SE 句柄安装
004142B7   .  64:A1 00000000   mov eax,dword ptr fs:[0]
004142BD   .  50               push eax
004142BE   .  64:8925 00000000 mov dword ptr fs:[0],esp
004142C5   .  83EC 64          sub esp,64
004142C8   .  A1 B0544300      mov eax,dword ptr ds:[4354B0]
004142CD   .  56               push esi
004142CE   .  894424 64        mov dword ptr ss:[esp+64],eax
004142D2   .  8BF1             mov esi,ecx
004142D4   .  E8 97FDFFFF      call Lover.00414070                            ;  注册信息完整性校验
004142D9   .  85C0             test eax,eax
004142DB   .  0F84 CE000000    je Lover.004143AF
004142E1   .  57               push edi
004142E2   .  33C0             xor eax,eax
004142E4   .  B9 16000000      mov ecx,16
004142E9   .  8D7C24 0C        lea edi,dword ptr ss:[esp+C]
004142ED   .  F3:AB            rep stos dword ptr es:[edi]
004142EF   .  8D4E 74          lea ecx,dword ptr ds:[esi+74]
004142F2   .  AA               stos byte ptr es:[edi]
004142F3   .  FF15 F08A4200    call dword ptr ds:[<&MFC71.#876_ATL::CSimpleSt>;  MFC71.7C158BCD
004142F9   .  8D5424 21        lea edx,dword ptr ss:[esp+21]
004142FD   .  5F               pop edi
004142FE   .  8BFF             mov edi,edi
00414300   >  8A08             mov cl,byte ptr ds:[eax]
00414302   .  40               inc eax
00414303   .  880A             mov byte ptr ds:[edx],cl
00414305   .  42               inc edx
00414306   .  84C9             test cl,cl
00414308   .^ 75 F6            jnz short Lover.00414300
0041430A   .  8D4E 7C          lea ecx,dword ptr ds:[esi+7C]
0041430D   .  FF15 F08A4200    call dword ptr ds:[<&MFC71.#876_ATL::CSimpleSt>;  MFC71.7C158BCD
00414313   .  8D5424 4F        lea edx,dword ptr ss:[esp+4F]
00414317   >  8A08             mov cl,byte ptr ds:[eax]
00414319   .  40               inc eax
0041431A   .  880A             mov byte ptr ds:[edx],cl
0041431C   .  42               inc edx
0041431D   .  84C9             test cl,cl
0041431F   .^ 75 F6            jnz short Lover.00414317
00414321   .  8D4E 78          lea ecx,dword ptr ds:[esi+78]
00414324   .  FF15 F08A4200    call dword ptr ds:[<&MFC71.#876_ATL::CSimpleSt>;  MFC71.7C158BCD
0041432A   .  8D5424 08        lea edx,dword ptr ss:[esp+8]
0041432E   .  8BFF             mov edi,edi
00414330   >  8A08             mov cl,byte ptr ds:[eax]
00414332   .  40               inc eax
00414333   .  880A             mov byte ptr ds:[edx],cl
00414335   .  42               inc edx
00414336   .  84C9             test cl,cl
00414338   .^ 75 F6            jnz short Lover.00414330
0041433A   .  8D4C24 04        lea ecx,dword ptr ss:[esp+4]
0041433E   .  E8 7D980000      call Lover.0041DBC0
00414343   .  8D4424 08        lea eax,dword ptr ss:[esp+8]                   ;  用户名
00414347   .  50               push eax
00414348   .  8D4C24 08        lea ecx,dword ptr ss:[esp+8]
0041434C   .  C74424 74 000000>mov dword ptr ss:[esp+74],0
00414354   .  E8 A7E9FEFF      call Lover.00402D00                            ;  注册校验,关键跟进
00414359   .  85C0             test eax,eax
0041435B   .  74 2E            je short Lover.0041438B                        ;  爆破点
0041435D   .  8D4C24 08        lea ecx,dword ptr ss:[esp+8]
00414361   .  51               push ecx
00414362   .  B9 A45B4300      mov ecx,Lover.00435BA4
00414367   .  E8 74BC0000      call Lover.0041FFE0
0041436C   .  6A 40            push 40
0041436E   .  68 548D4200      push Lover.00428D54
00414373   .  68 B4BA4200      push Lover.0042BAB4
00414378   .  8BCE             mov ecx,esi
0041437A   .  E8 F9FF0000      call <jmp.&MFC71.#4104_CWnd::MessageBoxA>
0041437F   .  8B16             mov edx,dword ptr ds:[esi]
00414381   .  8BCE             mov ecx,esi
00414383   .  FF92 54010000    call dword ptr ds:[edx+154]
00414389   .  EB 13            jmp short Lover.0041439E
0041438B   >  6A 30            push 30
0041438D   .  68 548D4200      push Lover.00428D54
00414392   .  68 94BA4200      push Lover.0042BA94                            ;  注册失败!请……
00414397   .  8BCE             mov ecx,esi
00414399   .  E8 DAFF0000      call <jmp.&MFC71.#4104_CWnd::MessageBoxA>
0041439E   >  8D4C24 04        lea ecx,dword ptr ss:[esp+4]
004143A2   .  C74424 70 FFFFFF>mov dword ptr ss:[esp+70],-1
004143AA   .  E8 A1E9FEFF      call Lover.00402D50
004143AF   >  8B4C24 68        mov ecx,dword ptr ss:[esp+68]
004143B3   .  64:890D 00000000 mov dword ptr fs:[0],ecx
004143BA   .  8B4C24 64        mov ecx,dword ptr ss:[esp+64]
004143BE   .  5E               pop esi
004143BF   .  E8 2D090100      call Lover.00424CF1
004143C4   .  83C4 70          add esp,70
004143C7   .  C3               retn
------------------------------------------------------------------------------------------------------

程序通过call Lover.00414070 校验注册信息的完整性,调用函数call Lover.00402D00 验证注册码,关键,跟进
------------------------------------------------------------------------------------------------------
00402D00  /$  56               push esi
00402D01  |.  8B7424 08        mov esi,dword ptr ss:[esp+8]                   ;  用户名
00402D05  |.  57               push edi
00402D06  |.  8D46 15          lea eax,dword ptr ds:[esi+15]                  ;  电子信箱
00402D09  |.  50               push eax                                       ; /Arg3
00402D0A  |.  56               push esi                                       ; |Arg2
00402D0B  |.  8D5424 14        lea edx,dword ptr ss:[esp+14]                  ; |
00402D0F  |.  52               push edx                                       ; |Arg1
00402D10  |.  33FF             xor edi,edi                                    ; |
00402D12  |.  E8 C9FCFFFF      call Lover.004029E0                            ; \Lover.004029E0
00402D17  |.  83C6 47          add esi,47
00402D1A  |.  56               push esi                                       ;  试炼码
00402D1B  |.  8D4C24 10        lea ecx,dword ptr ss:[esp+10]                  ;  真正注册码
00402D1F  |.  FF15 F48A4200    call dword ptr ds:[<&MFC71.#1482_ATL::CStringT>;  _mbscmp 比较函数
00402D25  |.  85C0             test eax,eax
00402D27  |.  75 05            jnz short Lover.00402D2E
00402D29  |.  BF 01000000      mov edi,1                                      ;  置注册成功标志
00402D2E  |>  8D4C24 0C        lea ecx,dword ptr ss:[esp+C]
00402D32  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402D38  |.  8BC7             mov eax,edi                                    ;  函数返回1,注册成功
00402D3A  |.  5F               pop edi
00402D3B  |.  5E               pop esi
00402D3C  |.  C2 0400          retn 4
------------------------------------------------------------------------------------------------------

通过call Lover.004029E0产生注册码,并同试练码明码比较,一致置注册成功标志!  经典^_^
------------------------------------------------------------------------------------------------------
004029E0  /$  6A FF            push -1
004029E2  |.  68 11564200      push Lover.00425611                            ;  SE 句柄安装
004029E7  |.  64:A1 00000000   mov eax,dword ptr fs:[0]
004029ED  |.  50               push eax
004029EE  |.  64:8925 00000000 mov dword ptr fs:[0],esp
004029F5  |.  83EC 1C          sub esp,1C
004029F8  |.  53               push ebx
004029F9  |.  55               push ebp
004029FA  |.  56               push esi
004029FB  |.  57               push edi
004029FC  |.  33F6             xor esi,esi
004029FE  |.  68 C08D4200      push Lover.00428DC0
00402A03  |.  8D4C24 24        lea ecx,dword ptr ss:[esp+24]
00402A07  |.  897424 2C        mov dword ptr ss:[esp+2C],esi
00402A0B  |.  FF15 B88A4200    call dword ptr ds:[<&MFC71.#304_ATL::CStringT<>;  MFC71.7C16A59C
00402A11  |.  8B4424 40        mov eax,dword ptr ss:[esp+40]                  ;  用户名
00402A15  |.  50               push eax
00402A16  |.  8D4C24 20        lea ecx,dword ptr ss:[esp+20]
00402A1A  |.  897424 38        mov dword ptr ss:[esp+38],esi
00402A1E  |.  FF15 B88A4200    call dword ptr ds:[<&MFC71.#304_ATL::CStringT<>;  MFC71.7C16A59C
00402A24  |.  8D4C24 1C        lea ecx,dword ptr ss:[esp+1C]
00402A28  |.  C64424 34 01     mov byte ptr ss:[esp+34],1
00402A2D  |.  FF15 C48A4200    call dword ptr ds:[<&MFC71.#2902_ATL::CSimpleS>;  Length
00402A33  |.  83E8 04          sub eax,4                                      ;  Eax=用户名长度-4
00402A36  |.  50               push eax
00402A37  |.  8D4C24 44        lea ecx,dword ptr ss:[esp+44]                  ;  用户名
00402A3B  |.  51               push ecx
00402A3C  |.  8D4C24 24        lea ecx,dword ptr ss:[esp+24]                  ;  用户名
00402A40  |.  FF15 C88A4200    call dword ptr ds:[<&MFC71.#5563_ATL::CStringT>;  MFC71.7C188DED
00402A46  |.  50               push eax                                       ;  用户名去前4位
00402A47  |.  8D4C24 20        lea ecx,dword ptr ss:[esp+20]
00402A4B  |.  C64424 38 02     mov byte ptr ss:[esp+38],2
00402A50  |.  FF15 CC8A4200    call dword ptr ds:[<&MFC71.#781_ATL::CStringT<>;  MFC71.7C150F15
00402A56  |.  8D4C24 40        lea ecx,dword ptr ss:[esp+40]
00402A5A  |.  C64424 34 01     mov byte ptr ss:[esp+34],1
00402A5F  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402A65  |.  8D4C24 1C        lea ecx,dword ptr ss:[esp+1C]
00402A69  |.  FF15 F08A4200    call dword ptr ds:[<&MFC71.#876_ATL::CSimpleSt>;  MFC71.7C158BCD
00402A6F  |.  8B2D 6C8B4200    mov ebp,dword ptr ds:[<&MSVCR71.atol>]         ;  MSVCR71.atol
00402A75  |.  50               push eax                                       ; /s
00402A76  |.  FFD5             call ebp                                       ; \atol(注册名去前4位)
00402A78  |.  8B5424 48        mov edx,dword ptr ss:[esp+48]                  ;  Email
00402A7C  |.  83C4 04          add esp,4
00402A7F  |.  52               push edx                                       ;  Email
00402A80  |.  8D4C24 1C        lea ecx,dword ptr ss:[esp+1C]
00402A84  |.  894424 2C        mov dword ptr ss:[esp+2C],eax
00402A88  |.  FF15 B88A4200    call dword ptr ds:[<&MFC71.#304_ATL::CStringT<>;  MFC71.7C16A59C
00402A8E  |.  8D4C24 18        lea ecx,dword ptr ss:[esp+18]
00402A92  |.  C64424 34 03     mov byte ptr ss:[esp+34],3
00402A97  |.  FF15 EC8A4200    call dword ptr ds:[<&MFC71.#4081_ATL::CStringT>;  MFC71.7C189FC8
00402A9D  |.  68 C08D4200      push Lover.00428DC0
00402AA2  |.  8D4C24 18        lea ecx,dword ptr ss:[esp+18]
00402AA6  |.  FF15 B88A4200    call dword ptr ds:[<&MFC71.#304_ATL::CStringT<>;  MFC71.7C16A59C
00402AAC  |.  8D4C24 24        lea ecx,dword ptr ss:[esp+24]
00402AB0  |.  FF15 E48A4200    call dword ptr ds:[<&MFC71.#310_ATL::CStringT<>;  MFC71.7C173199
00402AB6  |.  8D4C24 18        lea ecx,dword ptr ss:[esp+18]                  ;  Email
00402ABA  |.  C64424 34 05     mov byte ptr ss:[esp+34],5
00402ABF  |.  FF15 C48A4200    call dword ptr ds:[<&MFC71.#2902_ATL::CSimpleS>;  Length
00402AC5  |.  85C0             test eax,eax                                   ;  Eax=Email长度
00402AC7  |.  7E 47            jle short Lover.00402B10
00402AC9  |.  8DA424 00000000  lea esp,dword ptr ss:[esp]
00402AD0  |>  56               /push esi
00402AD1  |.  8D4C24 1C        |lea ecx,dword ptr ss:[esp+1C]                 ;  Email
00402AD5  |.  FF15 A48A4200    |call dword ptr ds:[<&MFC71.#865_ATL::CSimpleS>;  MFC71.7C1894E7
00402ADB  |.  0FBEC0           |movsx eax,al                                  ;  取字符 Email[i]
00402ADE  |.  50               |push eax
00402ADF  |.  8D4424 28        |lea eax,dword ptr ss:[esp+28]
00402AE3  |.  68 BC904200      |push Lover.004290BC                           ;  ASCII "%d"
00402AE8  |.  50               |push eax
00402AE9  |.  FF15 888A4200    |call dword ptr ds:[<&MFC71.#2322_ATL::CString>;  MFC71.7C146A9D
00402AEF  |.  83C4 0C          |add esp,0C
00402AF2  |.  8D4C24 24        |lea ecx,dword ptr ss:[esp+24]
00402AF6  |.  51               |push ecx
00402AF7  |.  8D4C24 18        |lea ecx,dword ptr ss:[esp+18]
00402AFB  |.  FF15 A88A4200    |call dword ptr ds:[<&MFC71.#907_ATL::CStringT>;  MFC71.7C14E599
00402B01  |.  8D4C24 18        |lea ecx,dword ptr ss:[esp+18]
00402B05  |.  46               |inc esi
00402B06  |.  FF15 C48A4200    |call dword ptr ds:[<&MFC71.#2902_ATL::CSimple>;  MFC71.7C146AB0
00402B0C  |.  3BF0             |cmp esi,eax
00402B0E  |.^ 7C C0            \jl short Lover.00402AD0                       ;  循环将Email转换成10进制字符串,记为Estr
00402B10  |>  6A 09            push 9                                         ;  9
00402B12  |.  8D5424 14        lea edx,dword ptr ss:[esp+14]
00402B16  |.  52               push edx
00402B17  |.  8D4C24 1C        lea ecx,dword ptr ss:[esp+1C]                  ;  Estr
00402B1B  |.  FF15 D88A4200    call dword ptr ds:[<&MFC71.#3997_ATL::CStringT>;  MFC71.7C188E36
00402B21  |.  B3 06            mov bl,6
00402B23  |.  8D4C24 10        lea ecx,dword ptr ss:[esp+10]
00402B27  |.  885C24 34        mov byte ptr ss:[esp+34],bl
00402B2B  |.  FF15 F08A4200    call dword ptr ds:[<&MFC71.#876_ATL::CSimpleSt>;  MFC71.7C158BCD
00402B31  |.  50               push eax                                       ; /Estr 前9位
00402B32  |.  FFD5             call ebp                                       ; \atol
00402B34  |.  83C4 04          add esp,4
00402B37  |.  8D4C24 14        lea ecx,dword ptr ss:[esp+14]
00402B3B  |.  8BF8             mov edi,eax
00402B3D  |.  BE 09000000      mov esi,9
00402B42  |.  FF15 C48A4200    call dword ptr ds:[<&MFC71.#2902_ATL::CSimpleS>;  GetLength
00402B48  |.  3BC6             cmp eax,esi                                    ;  Eax=Estr长度 Esi=9
00402B4A  |.  7E 70            jle short Lover.00402BBC                       ;  <=9
00402B4C  |.  8D6424 00        lea esp,dword ptr ss:[esp]
00402B50  |>  8D4C24 40        /lea ecx,dword ptr ss:[esp+40]
00402B54  |.  FF15 E48A4200    |call dword ptr ds:[<&MFC71.#310_ATL::CStringT>;  MFC71.7C173199
00402B5A  |.  6A 09            |push 9
00402B5C  |.  56               |push esi
00402B5D  |.  8D4424 4C        |lea eax,dword ptr ss:[esp+4C]
00402B61  |.  50               |push eax
00402B62  |.  8D4C24 20        |lea ecx,dword ptr ss:[esp+20]
00402B66  |.  C64424 40 07     |mov byte ptr ss:[esp+40],7
00402B6B  |.  FF15 7C8A4200    |call dword ptr ds:[<&MFC71.#4109_ATL::CString>;  MFC71.7C188D88
00402B71  |.  50               |push eax
00402B72  |.  8D4C24 44        |lea ecx,dword ptr ss:[esp+44]
00402B76  |.  C64424 38 08     |mov byte ptr ss:[esp+38],8
00402B7B  |.  FF15 CC8A4200    |call dword ptr ds:[<&MFC71.#781_ATL::CStringT>;  MFC71.7C150F15
00402B81  |.  8D4C24 44        |lea ecx,dword ptr ss:[esp+44]
00402B85  |.  FF15 FC8A4200    |call dword ptr ds:[<&MFC71.#578_ATL::CStringT>;  MFC71.7C1771B1
00402B8B  |.  8D4C24 40        |lea ecx,dword ptr ss:[esp+40]
00402B8F  |.  FF15 F08A4200    |call dword ptr ds:[<&MFC71.#876_ATL::CSimpleS>;  MFC71.7C158BCD
00402B95  |.  50               |push eax                                      ; /s
00402B96  |.  FFD5             |call ebp                                      ; \atol
00402B98  |.  83C4 04          |add esp,4
00402B9B  |.  8D4C24 40        |lea ecx,dword ptr ss:[esp+40]
00402B9F  |.  33F8             |xor edi,eax                                   ;  xor 上次计算结果
00402BA1  |.  885C24 34        |mov byte ptr ss:[esp+34],bl
00402BA5  |.  FF15 FC8A4200    |call dword ptr ds:[<&MFC71.#578_ATL::CStringT>;  MFC71.7C1771B1
00402BAB  |.  8D4C24 14        |lea ecx,dword ptr ss:[esp+14]
00402BAF  |.  83C6 09          |add esi,9
00402BB2  |.  FF15 C48A4200    |call dword ptr ds:[<&MFC71.#2902_ATL::CSimple>;  MFC71.7C146AB0
00402BB8  |.  3BF0             |cmp esi,eax
00402BBA  |.^ 7C 94            \jl short Lover.00402B50
00402BBC  |>  337C24 28        xor edi,dword ptr ss:[esp+28]                  ;  xor 用户名去前4位的值
00402BC0  |.  57               push edi
00402BC1  |.  8D4C24 14        lea ecx,dword ptr ss:[esp+14]                  ;  Email计算结果,记为SUM
00402BC5  |.  68 BC904200      push Lover.004290BC                            ;  ASCII "%d"
00402BCA  |.  51               push ecx
00402BCB  |.  FF15 888A4200    call dword ptr ds:[<&MFC71.#2322_ATL::CStringT>;  MFC71.7C146A9D
00402BD1  |.  8B1D 688B4200    mov ebx,dword ptr ds:[<&MSVCR71.atoi>]         ;  MSVCR71.atoi
00402BD7  |.  83C4 0C          add esp,0C
00402BDA  |.  BD 01000000      mov ebp,1
00402BDF  |.  33FF             xor edi,edi
00402BE1  |>  8D4C24 10        /lea ecx,dword ptr ss:[esp+10]
00402BE5  |.  FF15 C48A4200    |call dword ptr ds:[<&MFC71.#2902_ATL::CSimple>;  GetLength
00402BEB  |.  3BF8             |cmp edi,eax
00402BED  |.  7D 61            |jge short Lover.00402C50
00402BEF  |.  85ED             |test ebp,ebp                                  ;  区分奇偶位
00402BF1  |.  6A 01            |push 1
00402BF3  |.  8D4C24 14        |lea ecx,dword ptr ss:[esp+14]                 ;  计算结果
00402BF7  |.  57               |push edi
00402BF8  |.  74 2A            |je short Lover.00402C24
00402BFA  |.  8D5424 48        |lea edx,dword ptr ss:[esp+48]                 ;  保存注册码
00402BFE  |.  52               |push edx
00402BFF  |.  FF15 7C8A4200    |call dword ptr ds:[<&MFC71.#4109_ATL::CString>;  MFC71.7C188D88
00402C05  |.  8BC8             |mov ecx,eax
00402C07  |.  FF15 F08A4200    |call dword ptr ds:[<&MFC71.#876_ATL::CSimpleS>;  MFC71.7C158BCD
00402C0D  |.  50               |push eax                                      ; /s
00402C0E  |.  FFD3             |call ebx                                      ; \atoi
00402C10  |.  8BF0             |mov esi,eax                                   ;  分别取SUM[i]
00402C12  |.  83C4 04          |add esp,4
00402C15  |.  8D4C24 40        |lea ecx,dword ptr ss:[esp+40]
00402C19  |.  83C6 41          |add esi,41                                    ;  SUM[i]+41
00402C1C  |.  FF15 FC8A4200    |call dword ptr ds:[<&MFC71.#578_ATL::CStringT>;  MFC71.7C1771B1
00402C22  |.  EB 38            |jmp short Lover.00402C5C
00402C24  |>  8D4424 4C        |lea eax,dword ptr ss:[esp+4C]
00402C28  |.  50               |push eax
00402C29  |.  FF15 7C8A4200    |call dword ptr ds:[<&MFC71.#4109_ATL::CString>;  MFC71.7C188D88
00402C2F  |.  8BC8             |mov ecx,eax
00402C31  |.  FF15 F08A4200    |call dword ptr ds:[<&MFC71.#876_ATL::CSimpleS>;  MFC71.7C158BCD
00402C37  |.  50               |push eax                                      ; /s
00402C38  |.  FFD3             |call ebx                                      ; \atoi
00402C3A  |.  BE 5A000000      |mov esi,5A                                    ;  $5A
00402C3F  |.  83C4 04          |add esp,4
00402C42  |.  8D4C24 44        |lea ecx,dword ptr ss:[esp+44]
00402C46  |.  2BF0             |sub esi,eax                                   ;  $5A-SUM[i]
00402C48  |.  FF15 FC8A4200    |call dword ptr ds:[<&MFC71.#578_ATL::CStringT>;  MFC71.7C1771B1
00402C4E  |.  EB 0C            |jmp short Lover.00402C5C
00402C50  |>  8BF5             |mov esi,ebp
00402C52  |.  F7DE             |neg esi                                       ;  求补指令
00402C54  |.  1BF6             |sbb esi,esi
00402C56  |.  83E6 E7          |and esi,FFFFFFE7
00402C59  |.  83C6 5A          |add esi,5A
00402C5C  |>  56               |push esi
00402C5D  |.  8D4C24 24        |lea ecx,dword ptr ss:[esp+24]
00402C61  |.  FF15 808A4200    |call dword ptr ds:[<&MFC71.#908_ATL::CStringT>;  MFC71.7C18B24E
00402C67  |.  83FF 03          |cmp edi,3
00402C6A  |.  75 0F            |jnz short Lover.00402C7B
00402C6C  |.  68 B8904200      |push Lover.004290B8
00402C71  |.  8D4C24 24        |lea ecx,dword ptr ss:[esp+24]
00402C75  |.  FF15 AC8A4200    |call dword ptr ds:[<&MFC71.#911_ATL::CStringT>;  MFC71.7C14E587
00402C7B  |>  33C9             |xor ecx,ecx
00402C7D  |.  85ED             |test ebp,ebp
00402C7F  |.  0F94C1           |sete cl
00402C82  |.  47               |inc edi
00402C83  |.  83FF 09          |cmp edi,9                                     ;  *注册码位数*
00402C86  |.  8BE9             |mov ebp,ecx
00402C88  |.^ 0F8C 53FFFFFF    \jl Lover.00402BE1                             ;  循环产生注册码
00402C8E  |.  8B7424 3C        mov esi,dword ptr ss:[esp+3C]
00402C92  |.  8D5424 20        lea edx,dword ptr ss:[esp+20]
00402C96  |.  52               push edx
00402C97  |.  8BCE             mov ecx,esi
00402C99  |.  FF15 B08A4200    call dword ptr ds:[<&MFC71.#297_ATL::CStringT<>;  MFC71.7C14E575
00402C9F  |.  8D4C24 10        lea ecx,dword ptr ss:[esp+10]
00402CA3  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402CA9  |.  8D4C24 24        lea ecx,dword ptr ss:[esp+24]
00402CAD  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402CB3  |.  8D4C24 14        lea ecx,dword ptr ss:[esp+14]
00402CB7  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402CBD  |.  8D4C24 18        lea ecx,dword ptr ss:[esp+18]
00402CC1  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402CC7  |.  8D4C24 1C        lea ecx,dword ptr ss:[esp+1C]
00402CCB  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402CD1  |.  8D4C24 20        lea ecx,dword ptr ss:[esp+20]
00402CD5  |.  FF15 FC8A4200    call dword ptr ds:[<&MFC71.#578_ATL::CStringT<>;  MFC71.7C1771B1
00402CDB  |.  8B4C24 2C        mov ecx,dword ptr ss:[esp+2C]
00402CDF  |.  5F               pop edi
00402CE0  |.  8BC6             mov eax,esi
00402CE2  |.  5E               pop esi
00402CE3  |.  5D               pop ebp
00402CE4  |.  5B               pop ebx
00402CE5  |.  64:890D 00000000 mov dword ptr fs:[0],ecx
00402CEC  |.  83C4 28          add esp,28
00402CEF  \.  C2 0C00          retn 0C
------------------------------------------------------------------------------------------------------
这里可是产生注册码的地方哦!

【算法总结】:

1、取用户名后面部分(去除前4位),转换为长整型数Long
2、循环将Email转换为10进制字符串,记为Estr
3、将Estr以长度9为单位,分别转换成long,并相互XOR,计算结果 XOR 用户名计算结果,记为SUM
4、i=1 to 9

  假如Sun长度>=9 ,注册码奇数位=Sum[i]+$41,偶数位=$5A-Sum[i]
  假如Sun长度<9,注册码奇数位='A',偶数位='Z'

5、注册码第5位固定为'-'。

Delphi 7.0 注册机源代码表示如下:
Procedure TForm1.btn3Click(Sender: TObject);
Var
  Name, Email, EStr, SerialNo: String;
  i, Sum: Integer;
Begin
//信息不完整
  Name := edt1.Text;
  Email := edt2.Text;

  If (Length(edt1.Text) = 0) Or (Length(edt2.Text) = 0) Then Exit;

  Sum := 0;
  For i := 1 To Length(Email) Do EStr := EStr + IntToStr(Ord(Email[i]));
  For i := 1 To Length(EStr) Div 9 Do Sum := Sum Xor StrToIntDef(Copy(EStr, (i - 1) * 9 + 1, 9), 0);
  Sum := Sum Xor StrToIntDef(RightStr(EStr, Length(EStr) Mod 9), 0);

  EStr := IntToStr(Sum Xor StrToIntDef(RightStr(Name, Length(Name) - 4), 0));

  For i := 1 To 9 Do
  Begin
    If Length(EStr) >= i Then
    Begin
      If i Mod 2 = 1 Then
        SerialNo := SerialNo + Char(StrToIntDef(EStr[i], 0) + $41)
      Else
        SerialNo := SerialNo + Char($5A - StrToIntDef(EStr[i], 0));
    End
    Else
    Begin
      If i Mod 2 = 1 Then
        SerialNo := SerialNo + 'A'
      Else
        SerialNo := SerialNo + 'Z';
    End;
    If i = 4 Then SerialNo := SerialNo + '-';
  End;
  edt3.Text := SerialNo;
End;

用户名:baby2008
电子邮箱:jw6y8@21cn.com
注册码:IWBU-AZFZB

注册信息保存在:HKEY_CURRENT_USER\Software\AYCD\Option ,删除可重新注册。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
20RMB也不放过
呵呵
2005-4-16 15:55
0
雪    币: 442
活跃值: (1241)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
3
最初由 shoooo 发布
20RMB也不放过
呵呵


我还搞过一个8RMB的(处女作),这个已经升值了250%了

柿子挑软的你看软件的名称多牛
2005-4-16 16:15
0
游客
登录 | 注册 方可回帖
返回
//