【破文标题】简简单单找到Open Video Converter v3.01的注册码
【破文作者】marsaber
【作者邮箱】marsaber@163.com
【作者主页】http://marsangel.ys168.com
【破解工具】Peid 0.93、W32dasm、OllyDbg
【破解平台】Windows 2003 SP1
【软件名称】Open Video Converter v3.01
【软件大小】541 KB

【原版下载】http://www.crsky.com/soft/3818.html
【保护方式】不知道
【软件简介】一款易于使用的视频转换,分割和编辑工具.它能转换多个视频格式如MPG, AVI, ASF, WMV到AVI 文件. 它能改变帧尺寸,帧频,视频和音频压缩编码.主要功能有: -转换MPEG,WMV,ASF,MPG,VCD,OGM,DAT,SVCD为AVI. 支持DIVX,XVID编码. 
-分割视频文件 
-改变帧尺寸,调整视频屏幕高宽比. 
-通过选择不同编码率改变视频文件大小 
-改变AVI文件的视频和音频压缩编码。
------------------------------------------------------------------------
【破解过程】1.Peid 0.93查壳,无壳,Microsoft Visual C++ 7.0编写!
2.运行,出现输入用户名和注册码的提示框,用户名:marsaber,注册码:111111111,错误提示:Registration failed!
3.W32dasm3.0无极版载入,查找字符串参考,没有发现错误提示信息:Registration failed!
4.OllyDbg载入,来到:
00438A7C >  6A 60           push 60
00438A7E    68 C8524600     push VideoCon.004652C8
00438A83    E8 A4030000     call VideoCon.00438E2C

右键-->Ultra字符串参考-->查找ASCII-->Ctrl+F-->输入"Registration failed"-->来到"00424C55  push VideoCon.004603C0
 Registration failed!",双击来到:00424C55处!
5.W32dasm3.0无极版重新载入,Shift+F12,输入00424C55,回车!得到信息并分析:
:00424B5D 3BD0                    cmp edx, eax
:00424B5F 753C                    jne 00424B9D
:00424B61 0FB64DF8                movzx ecx, byte ptr [ebp-08]
:00424B65 0FB655FD                movzx edx, byte ptr [ebp-03]
:00424B69 83EA30                  sub edx, 00000030
:00424B6C 3BCA                    cmp ecx, edx
:00424B6E 752D                    jne 00424B9D               //如果ecx!=edx,跳到00424B9D!
:00424B70 0FB645FF                movzx eax, byte ptr [ebp-01]
:00424B74 0FB64DF6                movzx ecx, byte ptr [ebp-0A]
:00424B78 83E930                  sub ecx, 00000030
:00424B7B 3BC1                    cmp eax, ecx
:00424B7D 751E                    jne 00424B9D               //如果eax!=ecx,跳到00424B9D!
:00424B7F 0FB655FA                movzx edx, byte ptr [ebp-06]
:00424B83 0FB645F5                movzx eax, byte ptr [ebp-0B]
:00424B87 83E830                  sub eax, 00000030
:00424B8A 3BD0                    cmp edx, eax
:00424B8C 750F                    jne 00424B9D               //如果edx!=eax,跳到00424B9D!
:00424B8E 0FB64DF4                movzx ecx, byte ptr [ebp-0C]
:00424B92 0FB655F9                movzx edx, byte ptr [ebp-07]
:00424B96 83EA30                  sub edx, 00000030
:00424B99 3BCA                    cmp ecx, edx
:00424B9B 7458                    je 00424BF5               //如果ecx==edx,注册成功!

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00424B5F(C), :00424B6E(C), :00424B7D(C), :00424B8C(C)
|
:00424B9D 0FB645FC                movzx eax, byte ptr [ebp-04]
:00424BA1 83F835                  cmp eax, 00000035
:00424BA4 0F85A7000000            jne 00424C51               //不等于5就跳到00424C51
:00424BAA 0FB64DFD                movzx ecx, byte ptr [ebp-03]
:00424BAE 83F931                  cmp ecx, 00000031
:00424BB1 0F859A000000            jne 00424C51               //不等于1就跳到00424C51
:00424BB7 0FB655F6                movzx edx, byte ptr [ebp-0A]
:00424BBB 83FA38                  cmp edx, 00000038
:00424BBE 0F858D000000            jne 00424C51               //不等于8就跳到00424C51
:00424BC4 0FB645F5                movzx eax, byte ptr [ebp-0B]
:00424BC8 83F839                  cmp eax, 00000039
:00424BCB 0F8580000000            jne 00424C51               //不等于9就跳到00424C51
:00424BD1 0FB64DF9                movzx ecx, byte ptr [ebp-07]
:00424BD5 83F937                  cmp ecx, 00000037
:00424BD8 7577                    jne 00424C51               //不等于7就跳到00424C51
:00424BDA 0FB655F7                movzx edx, byte ptr [ebp-09]
:00424BDE 83FA36                  cmp edx, 00000036
:00424BE1 756E                    jne 00424C51               //不等于6就跳到00424C51
:00424BE3 0FB645FE                movzx eax, byte ptr [ebp-02]
:00424BE7 83F832                  cmp eax, 00000032
:00424BEA 7565                    jne 00424C51               //不等于2就跳到00424C51
:00424BEC 0FB64DFB                movzx ecx, byte ptr [ebp-05]
:00424BF0 83F939                  cmp ecx, 00000039
:00424BF3 755C                    jne 00424C51               //不等于9就跳到00424C51
                   //得到-->51897629,事实证明这个就是我这台机子的注册码!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00424B9B(C)
|
:00424BF5 6A00                    push 00000000
:00424BF7 6A00                    push 00000000
:00424BF9 6874034600              push 00460374               //注册成功!
:00424BFE E86CBF0200              call 00450B6F
:00424C03 8B4DE0                  mov ecx, dword ptr [ebp-20]
:00424C06 83C170                  add ecx, 00000070
:00424C09 E862F4FFFF              call 00424070
:00424C0E 50                      push eax
:00424C0F 6890034600              push 00460390
:00424C14 689C034600              push 0046039C
:00424C19 E8A295FEFF              call 0040E1C0
:00424C1E 8BC8                    mov ecx, eax
:00424C20 E8AABC0200              call 004508CF
:00424C25 8B4DE0                  mov ecx, dword ptr [ebp-20]
:00424C28 83C174                  add ecx, 00000074
:00424C2B E840F4FFFF              call 00424070
:00424C30 50                      push eax
:00424C31 68A4034600              push 004603A4
:00424C36 68B8034600              push 004603B8
:00424C3B E88095FEFF              call 0040E1C0
:00424C40 8BC8                    mov ecx, eax
:00424C42 E888BC0200              call 004508CF
:00424C47 8B4DE0                  mov ecx, dword ptr [ebp-20]
:00424C4A E887620200              call 0044AED6
:00424C4F EB0E                    jmp 00424C5F

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00424BA4(C), :00424BB1(C), :00424BBE(C), :00424BCB(C), :00424BD8(C)
|:00424BE1(C), :00424BEA(C), :00424BF3(C)
|
:00424C51 6A00                    push 00000000
:00424C53 6A00                    push 00000000
:00424C55 68C0034600              push 004603C0               //注册失败!
:00424C5A E810BF0200              call 00450B6F
6.运行VideoConverter.exe,输入用户名marsaber,注册码51897629,OK,注册成功!关闭再运行,无注册提示框出现!成功!
7.HKEY_CURRENT_USER\Software\DigitByteStudio\VideoConverter\Option下删除键值username和registration_code,重新运行又需要输入用户名和注册码,输入110和注册码:51897629,成功
8.再删除键值,输入霏凡提供的用户名:crsky和注册码:98756171,成功!汗,不知道是怎么回事,反正是稀里糊涂的成功了!
------------------------------------------------------------------------
【破解总结】毫无技术性可言!
纯属娱乐!
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

http://bbs.pediy.com/showthread.php?s=&threadid=19735
首先要感谢marsaber,小弟是在他分析的基础上深入研究的
算法其实挺简单的,一点耐心加上一点汇编基础就行了


0042499E  |.  83F8 02         CMP EAX,2                                ;  用户名至少两位
004249A1  |.  7D 13           JGE SHORT VideoCon.004249B6
004249A3  |.  6A 00           PUSH 0
004249A5  |.  6A 00           PUSH 0
004249A7  |.  68 2C034600     PUSH VideoCon.0046032C                   ;  ASCII "Please input correct User Name!"
004249AC  |.  E8 BEC10200     CALL VideoCon.00450B6F
004249B1  |.  E9 A9020000     JMP VideoCon.00424C5F
004249B6  |>  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]
004249B9  |.  83C1 74         ADD ECX,74
004249BC  |.  E8 8F70FEFF     CALL VideoCon.0040BA50
004249C1  |.  83F8 08         CMP EAX,8                                ;  注册码至少八位
004249C4  |.  7D 13           JGE SHORT VideoCon.004249D9
004249C6  |.  6A 00           PUSH 0
004249C8  |.  6A 00           PUSH 0
004249CA  |.  68 4C034600     PUSH VideoCon.0046034C                   ;  ASCII "Please input correct Registration Code!"
004249CF  |.  E8 9BC10200     CALL VideoCon.00450B6F
004249D4  |.  E9 86020000     JMP VideoCon.00424C5F
004249D9  |>  6A 00           PUSH 0                                   ; /Arg1 = 00000000
004249DB  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
004249DE  |.  83C1 70         ADD ECX,70                               ; |
004249E1  |.  E8 AAF5FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
004249E6  |.  8845 EF         MOV BYTE PTR SS:[EBP-11],AL              ;  用户名第一位
004249E9  |.  6A 01           PUSH 1                                   ; /Arg1 = 00000001
004249EB  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
004249EE  |.  83C1 70         ADD ECX,70                               ; |
004249F1  |.  E8 9AF5FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
004249F6  |.  8845 F8         MOV BYTE PTR SS:[EBP-8],AL               ;  用户名第二位
004249F9  |.  6A 00           PUSH 0                                   ; /Arg1 = 00000000
004249FB  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
004249FE  |.  83C1 70         ADD ECX,70                               ; |
00424A01  |.  E8 8AF5FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424A06  |.  8845 FF         MOV BYTE PTR SS:[EBP-1],AL               ;  第一位
00424A09  |.  6A 01           PUSH 1                                   ; /Arg1 = 00000001
00424A0B  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424A0E  |.  83C1 70         ADD ECX,70                               ; |
00424A11  |.  E8 7AF5FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424A16  |.  8845 FA         MOV BYTE PTR SS:[EBP-6],AL               ;  第二位
00424A19  |.  0FB645 EF       MOVZX EAX,BYTE PTR SS:[EBP-11]           ;  第一位ASCII
00424A1D  |.  83C8 41         OR EAX,41                                ;  第一位ASCII OR 41
00424A20  |.  8845 EF         MOV BYTE PTR SS:[EBP-11],AL              ;  放回[ebp-11],记作码1
00424A23  |.  0FB64D F8       MOVZX ECX,BYTE PTR SS:[EBP-8]            ;  第二位ASCII
00424A27  |.  83C9 56         OR ECX,56                                ;  第二位ASCII OR 56
00424A2A  |.  884D F8         MOV BYTE PTR SS:[EBP-8],CL               ;  放回[ebp-8],记作码2
00424A2D  |.  0FB655 FF       MOVZX EDX,BYTE PTR SS:[EBP-1]            ;  第一位
00424A31  |.  83CA 49         OR EDX,49                                ;  第一位ASCII OR 49
00424A34  |.  8855 FF         MOV BYTE PTR SS:[EBP-1],DL               ;  放回[ebp-1],记作码3
00424A37  |.  0FB645 FA       MOVZX EAX,BYTE PTR SS:[EBP-6]            ;  第二位ASCII
00424A3B  |.  83C8 43         OR EAX,43                                ;  第二位ASCII OR 43
00424A3E  |.  8845 FA         MOV BYTE PTR SS:[EBP-6],AL               ;  放回[ebp-6],记作码4
00424A41  |.  0FB645 EF       MOVZX EAX,BYTE PTR SS:[EBP-11]
00424A45  |.  99              CDQ
00424A46  |.  B9 0A000000     MOV ECX,0A                               ;  被除数10(十进制,下同)
00424A4B  |.  F7F9            IDIV ECX
00424A4D  |.  8855 EF         MOV BYTE PTR SS:[EBP-11],DL              ;  码1除以10,余数放回码1
00424A50  |.  0FB645 F8       MOVZX EAX,BYTE PTR SS:[EBP-8]
00424A54  |.  99              CDQ
00424A55  |.  B9 0A000000     MOV ECX,0A
00424A5A  |.  F7F9            IDIV ECX
00424A5C  |.  8855 F8         MOV BYTE PTR SS:[EBP-8],DL               ;  码2除以10,余数放回码2
00424A5F  |.  0FB645 FF       MOVZX EAX,BYTE PTR SS:[EBP-1]
00424A63  |.  99              CDQ
00424A64  |.  B9 0A000000     MOV ECX,0A
00424A69  |.  F7F9            IDIV ECX
00424A6B  |.  8855 FF         MOV BYTE PTR SS:[EBP-1],DL               ;  码3除以10,余数放回码3
00424A6E  |.  0FB645 FA       MOVZX EAX,BYTE PTR SS:[EBP-6]
00424A72  |.  99              CDQ
00424A73  |.  B9 0A000000     MOV ECX,0A
00424A78  |.  F7F9            IDIV ECX
00424A7A  |.  8855 FA         MOV BYTE PTR SS:[EBP-6],DL               ;  码4除以10,余数放回码4
00424A7D  |.  C745 F0 0000000>MOV DWORD PTR SS:[EBP-10],0
00424A84  |.  C745 E8 0000000>MOV DWORD PTR SS:[EBP-18],0
00424A8B  |.  EB 09           JMP SHORT VideoCon.00424A96
00424A8D  |>  8B55 E8         /MOV EDX,DWORD PTR SS:[EBP-18]           ;  用户名第X位
00424A90  |.  83C2 01         |ADD EDX,1                               ;  位数加1
00424A93  |.  8955 E8         |MOV DWORD PTR SS:[EBP-18],EDX
00424A96  |>  8B4D E0          MOV ECX,DWORD PTR SS:[EBP-20]
00424A99  |.  83C1 70         |ADD ECX,70
00424A9C  |.  E8 AF6FFEFF     |CALL VideoCon.0040BA50
00424AA1  |.  3945 E8         |CMP DWORD PTR SS:[EBP-18],EAX           ;  eax=用户名位数,到最后一位了吗?
00424AA4  |.  7D 1E           |JGE SHORT VideoCon.00424AC4
00424AA6  |.  8B45 E8         |MOV EAX,DWORD PTR SS:[EBP-18]
00424AA9  |.  50              |PUSH EAX                                ; /Arg1
00424AAA  |.  8B4D E0         |MOV ECX,DWORD PTR SS:[EBP-20]           ; |
00424AAD  |.  83C1 70         |ADD ECX,70                              ; |
00424AB0  |.  E8 DBF4FFFF     |CALL VideoCon.00423F90                  ; \VideoCon.00423F90
00424AB5  |.  8845 E7         |MOV BYTE PTR SS:[EBP-19],AL
00424AB8  |.  0FB64D E7       |MOVZX ECX,BYTE PTR SS:[EBP-19]          ;  第X位ASCII 码- ecx
00424ABC  |.  034D F0         |ADD ECX,DWORD PTR SS:[EBP-10]           ;  用户名每位ASCII 码累加
00424ABF  |.  894D F0         |MOV DWORD PTR SS:[EBP-10],ECX
00424AC2  |.^ EB C9           \JMP SHORT VideoCon.00424A8D
00424AC4  |>  8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]            ;  上面累加结果->eax
00424AC7  |.  99              CDQ
00424AC8  |.  B9 0A000000     MOV ECX,0A
00424ACD  |.  F7F9            IDIV ECX                                 ;  累加结果除以10,余数放到[ebp-c]
00424ACF  |.  8855 F4         MOV BYTE PTR SS:[EBP-C],DL               ;  记此余数为码5
00424AD2  |.  6A 00           PUSH 0                                   ; /Arg1 = 00000000
00424AD4  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424AD7  |.  83C1 74         ADD ECX,74                               ; |
00424ADA  |.  E8 B1F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424ADF  |.  8845 FC         MOV BYTE PTR SS:[EBP-4],AL               ;  假注册码第一位放到[ebp-4]
00424AE2  |.  6A 01           PUSH 1                                   ; /Arg1 = 00000001
00424AE4  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424AE7  |.  83C1 74         ADD ECX,74                               ; |
00424AEA  |.  E8 A1F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424AEF  |.  8845 FD         MOV BYTE PTR SS:[EBP-3],AL               ;  假注册码第二位放到[ebp-3]
00424AF2  |.  6A 02           PUSH 2                                   ; /Arg1 = 00000002
00424AF4  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424AF7  |.  83C1 74         ADD ECX,74                               ; |
00424AFA  |.  E8 91F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424AFF  |.  8845 F6         MOV BYTE PTR SS:[EBP-A],AL               ;  假注册码第三位放到[ebp-A]
00424B02  |.  6A 03           PUSH 3                                   ; /Arg1 = 00000003
00424B04  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424B07  |.  83C1 74         ADD ECX,74                               ; |
00424B0A  |.  E8 81F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424B0F  |.  8845 F5         MOV BYTE PTR SS:[EBP-B],AL               ;  假码第四位放到[ebp-B]
00424B12  |.  6A 04           PUSH 4                                   ; /Arg1 = 00000004
00424B14  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424B17  |.  83C1 74         ADD ECX,74                               ; |
00424B1A  |.  E8 71F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424B1F  |.  8845 F9         MOV BYTE PTR SS:[EBP-7],AL               ;  第五位[ebp-7]
00424B22  |.  6A 05           PUSH 5                                   ; /Arg1 = 00000005
00424B24  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424B27  |.  83C1 74         ADD ECX,74                               ; |
00424B2A  |.  E8 61F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424B2F  |.  8845 F7         MOV BYTE PTR SS:[EBP-9],AL               ;  第六位[ebp-9]
00424B32  |.  6A 06           PUSH 6                                   ; /Arg1 = 00000006
00424B34  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424B37  |.  83C1 74         ADD ECX,74                               ; |
00424B3A  |.  E8 51F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424B3F  |.  8845 FE         MOV BYTE PTR SS:[EBP-2],AL               ;  第七位[ebp-2]
00424B42  |.  6A 07           PUSH 7                                   ; /Arg1 = 00000007
00424B44  |.  8B4D E0         MOV ECX,DWORD PTR SS:[EBP-20]            ; |
00424B47  |.  83C1 74         ADD ECX,74                               ; |
00424B4A  |.  E8 41F4FFFF     CALL VideoCon.00423F90                   ; \VideoCon.00423F90
00424B4F  |.  8845 FB         MOV BYTE PTR SS:[EBP-5],AL               ;  第八位[ebp-5]
00424B52  |.  0FB655 EF       MOVZX EDX,BYTE PTR SS:[EBP-11]           ;  码1
00424B56  |.  0FB645 FC       MOVZX EAX,BYTE PTR SS:[EBP-4]            ;  假注册码第1位的ASCII
00424B5A  |.  83E8 30         SUB EAX,30                               ;  转成数字
00424B5D  |.  3BD0            CMP EDX,EAX                              ;  要相等
00424B5F  |.  75 3C           JNZ SHORT VideoCon.00424B9D
00424B61  |.  0FB64D F8       MOVZX ECX,BYTE PTR SS:[EBP-8]
00424B65  |.  0FB655 FD       MOVZX EDX,BYTE PTR SS:[EBP-3]
00424B69  |.  83EA 30         SUB EDX,30
00424B6C  |.  3BCA            CMP ECX,EDX
00424B6E  |.  75 2D           JNZ SHORT VideoCon.00424B9D              ;  码2与第二位注册码
00424B70  |.  0FB645 FF       MOVZX EAX,BYTE PTR SS:[EBP-1]
00424B74  |.  0FB64D F6       MOVZX ECX,BYTE PTR SS:[EBP-A]
00424B78  |.  83E9 30         SUB ECX,30
00424B7B  |.  3BC1            CMP EAX,ECX
00424B7D  |.  75 1E           JNZ SHORT VideoCon.00424B9D              ;  码3
00424B7F  |.  0FB655 FA       MOVZX EDX,BYTE PTR SS:[EBP-6]
00424B83  |.  0FB645 F5       MOVZX EAX,BYTE PTR SS:[EBP-B]
00424B87  |.  83E8 30         SUB EAX,30
00424B8A  |.  3BD0            CMP EDX,EAX
00424B8C  |.  75 0F           JNZ SHORT VideoCon.00424B9D              ;  码4
00424B8E  |.  0FB64D F4       MOVZX ECX,BYTE PTR SS:[EBP-C]
00424B92  |.  0FB655 F9       MOVZX EDX,BYTE PTR SS:[EBP-7]
00424B96  |.  83EA 30         SUB EDX,30
00424B99  |.  3BCA            CMP ECX,EDX
00424B9B  |.  74 58           JE SHORT VideoCon.00424BF5               ;  码5
00424B9D  |>  0FB645 FC       MOVZX EAX,BYTE PTR SS:[EBP-4]            ;  上面码1至码5如果有一个不符合,则运算出的注册码不对
00424BA1  |.  83F8 35         CMP EAX,35                               ;  但是还有一次机会,通用注册码,51897629
00424BA4  |.  0F85 A7000000   JNZ VideoCon.00424C51
00424BAA  |.  0FB64D FD       MOVZX ECX,BYTE PTR SS:[EBP-3]
00424BAE  |.  83F9 31         CMP ECX,31
00424BB1  |.  0F85 9A000000   JNZ VideoCon.00424C51
00424BB7  |.  0FB655 F6       MOVZX EDX,BYTE PTR SS:[EBP-A]
00424BBB  |.  83FA 38         CMP EDX,38
00424BBE  |.  0F85 8D000000   JNZ VideoCon.00424C51
00424BC4  |.  0FB645 F5       MOVZX EAX,BYTE PTR SS:[EBP-B]
00424BC8  |.  83F8 39         CMP EAX,39
00424BCB  |.  0F85 80000000   JNZ VideoCon.00424C51
00424BD1  |.  0FB64D F9       MOVZX ECX,BYTE PTR SS:[EBP-7]
00424BD5  |.  83F9 37         CMP ECX,37
00424BD8  |.  75 77           JNZ SHORT VideoCon.00424C51
00424BDA  |.  0FB655 F7       MOVZX EDX,BYTE PTR SS:[EBP-9]
00424BDE  |.  83FA 36         CMP EDX,36
00424BE1  |.  75 6E           JNZ SHORT VideoCon.00424C51
00424BE3  |.  0FB645 FE       MOVZX EAX,BYTE PTR SS:[EBP-2]
00424BE7  |.  83F8 32         CMP EAX,32
00424BEA  |.  75 65           JNZ SHORT VideoCon.00424C51
00424BEC  |.  0FB64D FB       MOVZX ECX,BYTE PTR SS:[EBP-5]
00424BF0  |.  83F9 39         CMP ECX,39
00424BF3  |.  75 5C           JNZ SHORT VideoCon.00424C51              ;  也不是通用注册码,就注册失败,否则成功




总结一下算法:
用户名至少2位,注册码至少8位
第一位的ASCII码 OR 41(十六进制),除以A(十六进制),余数作为码1
第二位的ASCII码 OR 56(十六进制),除以A(十六进制),余数作为码2
第一位的ASCII码 OR 49(十六进制),除以A(十六进制),余数作为码3
第二位的ASCII码 OR 43(十六进制),除以A(十六进制),余数作为码4
用户名所有位数ASCII码累加,除以A,余数作为码5
码1至码5分别与注册码前五位比较,全同则注册成功
否则判断注册码前八位是否为通用注册码51897629,是则注册成功,否则注册失败。

用户名:alifriend
注册码:76512XXXXXXXXXX(XX随便,注册码至少八位就行)

注册机

#include<iostream.h>
#include <stdio.h>
void main()
{
int i=0,j=0;
char name[100];
gets(name);
cout<<endl;
cout<<(name[0]|65)%10;
cout<<(name[1]|86)%10;
cout<<(name[0]|73)%10;
cout<<(name[1]|67)%10;
while(name[i]!='\0')
{
j=j+name[i];
i++;
}
cout<<j%10<<"000"<<endl;
}

  • 标 题:跟上
  • 作 者:china
  • 时 间:2005-12-25,20:21

procedure Tkeygen.genButton1Click(Sender: TObject);
var
s,s1,s2,s3,s4,s5,s6:String;
begin
s:=nameEdit.Text;
if length(s)<1 then
begin
ShowMessage('请正确输入用户名!');
exit;
end;
s1:=inttostr((ord(s[1]) or $41)mod $a);
s2:=inttostr((ord(s[2]) or $56)mod $a);
s3:=inttostr((ord(s[1]) or $49)mod $a);
s4:=inttostr((ord(s[2]) or $43)mod $a);
s5:=inttostr((ord(s[1])+ord(s[2])+ord(s[3])+ord(s[4])+ord(s[5]))mod $a);
s6:=inttostr(random(9))+inttostr(random(3))+inttostr(random(6));//随便设置随机数
codeEdit.Text:=s1+s2+s3+s4+s5+s6;
end;