首页
社区
课程
招聘
[原创]对 爱在天涯's另类破解练习 的注册检测方式分析+Delphi注册机实现+CrackMe代码的易语言还原(从四楼开始)
2007-4-14 01:43 11208

[原创]对 爱在天涯's另类破解练习 的注册检测方式分析+Delphi注册机实现+CrackMe代码的易语言还原(从四楼开始)

2007-4-14 01:43
11208
对 爱在天涯's另类破解练习 的注册检测方式分析+Delphi注册机实现+CrackMe代码的易语言还原(从四楼开始)

难得周末,今天一上论坛便看到了很多经典的帖子,于是仔细看呀看,发现了其中一篇 爱在天涯 兄写的一个【另类破解练习】,是易语言编

写的,恰好偶也正在学习易语言,嘿嘿,出于爱好和借鉴,自然要下来看看的了。

原帖:http://bbs.pediy.com/showthread.php?t=42539

与其它CrackMe有些不一样,这个东东进了注册界面后,点击注册按钮没有任何提示,看来现在流行这样了,呵呵。反正 爱在天涯 兄也给了2

天时间,偶才不慌呐!决定象小蜗牛一样,慢慢爬!总要找到的,关键在于学习嘛!

打开OD,载入CrackMe程序,F9运行,出现界面后,alt+m 弹出内存窗口,找到:

00409000 00004000 (16384.)  注册   .ecode    Imag  01001002  R  RWE

这一行上,F2下断,自动停在了:

0040B2EE    55              push    ebp

这一行上,F8走一遍:

0040B2EE    55              push    ebp                   ; 界面窗口的时钟事件(因为猛按F9都还是停在这里,想不出来还有其它什么

东东有这样猛)
0040B2EF    8BEC            mov     ebp, esp
0040B2F1    81EC 04000000   sub     esp, 4
0040B2F7    68 3D914000     push    注册.0040913D
0040B2FC    FF35 B04CD200   push    dword ptr [D24CB0]
0040B302    E8 83FEFFFF     call    注册.0040B18A
0040B307    83C4 08         add     esp, 8
0040B30A    83F8 00         cmp     eax, 0
0040B30D    0F84 08010000   je      注册.0040B41B                    ; 下面便是注册提示?
0040B313    6A 00           push    0
0040B315    FF35 B04CD200   push    dword ptr [D24CB0]
0040B31B    6A FF           push    -1
0040B31D    6A 08           push    8
0040B31F    68 25000116     push    16010025
0040B324    68 01000152     push    52010001
0040B329    E8 8B140000     call    注册.0040C7B9
0040B32E    83C4 18         add     esp, 18
0040B331    6A 00           push    0
0040B333    68 00000000     push    0
0040B338    6A FF           push    -1
0040B33A    6A 08           push    8
0040B33C    68 82000116     push    16010082
0040B341    68 01000152     push    52010001
0040B346    E8 6E140000     call    注册.0040C7B9
0040B34B    83C4 18         add     esp, 18
0040B34E    68 3E914000     push    注册.0040913E                      ; -,你已经成功注册了.不过这次未对注册算法优化,也没有

用到加密算法!
0040B353    FF35 B04CD200   push    dword ptr [D24CB0]
0040B359    68 81914000     push    注册.00409181                      ; 恭喜-
0040B35E    B9 03000000     mov     ecx, 3
0040B363    E8 2AFFFFFF     call    注册.0040B292
0040B368    83C4 0C         add     esp, 0C
0040B36B    8945 FC         mov     dword ptr [ebp-4], eax
0040B36E    6A 00           push    0
0040B370    6A 00           push    0
0040B372    6A 00           push    0
0040B374    68 01030080     push    80000301
0040B379    6A 00           push    0
0040B37B    68 00000000     push    0
0040B380    68 04000080     push    80000004
0040B385    6A 00           push    0
0040B387    8B45 FC         mov     eax, dword ptr [ebp-4]
0040B38A    85C0            test    eax, eax
0040B38C    75 05           jnz     short 注册.0040B393
0040B38E    B8 3D914000     mov     eax, 注册.0040913D
0040B393    50              push    eax
0040B394    68 03000000     push    3
0040B399    BB 00030000     mov     ebx, 300
0040B39E    E8 1C140000     call    注册.0040C7BF
0040B3A3    83C4 28         add     esp, 28
0040B3A6    8B5D FC         mov     ebx, dword ptr [ebp-4]
0040B3A9    85DB            test    ebx, ebx
0040B3AB    74 09           je      short 注册.0040B3B6
0040B3AD    53              push    ebx
0040B3AE    E8 00140000     call    注册.0040C7B3
0040B3B3    83C4 04         add     esp, 4
0040B3B6    6A 00           push    0
0040B3B8    6A 00           push    0
0040B3BA    6A 00           push    0
0040B3BC    68 01030080     push    80000301
0040B3C1    6A 00           push    0
0040B3C3    68 00000000     push    0
0040B3C8    68 04000080     push    80000004
0040B3CD    6A 00           push    0
0040B3CF    68 87914000     push    注册.00409187                      ; 不过你真的可以算是够历害的啦,兄弟该不是爆的吧!!!
0040B3D4    68 03000000     push    3
0040B3D9    BB 00030000     mov     ebx, 300
0040B3DE    E8 DC130000     call    注册.0040C7BF
0040B3E3    83C4 28         add     esp, 28
0040B3E6    6A 00           push    0
0040B3E8    6A 00           push    0
0040B3EA    6A 00           push    0
0040B3EC    68 01030080     push    80000301
0040B3F1    6A 00           push    0
0040B3F3    68 00000000     push    0
0040B3F8    68 04000080     push    80000004
0040B3FD    6A 00           push    0
0040B3FF    68 BC914000     push    注册.004091BC                      ; 有些另类吧,下次会再加强一些的,谢谢你的支持和参与!

!!
0040B404    68 03000000     push    3
0040B409    BB 00030000     mov     ebx, 300
0040B40E    E8 AC130000     call    注册.0040C7BF
0040B413    83C4 28         add     esp, 28
0040B416    E9 1D000000     jmp     注册.0040B438
0040B41B    6A 00           push    0
0040B41D    68 F5914000     push    注册.004091F5                      ; 未注册
0040B422    6A FF           push    -1
0040B424    6A 08           push    8
0040B426    68 25000116     push    16010025
0040B42B    68 01000152     push    52010001
0040B430    E8 84130000     call    注册.0040C7B9
0040B435    83C4 18         add     esp, 18
0040B438    8BE5            mov     esp, ebp
0040B43A    5D              pop     ebp
0040B43B    C3              retn
0040B43C    55              push    ebp
0040B43D    8BEC            mov     ebp, esp
0040B43F    6A 00           push    0
0040B441    68 01000000     push    1
0040B446    6A FF           push    -1
0040B448    6A 05           push    5
0040B44A    68 47000106     push    6010047
0040B44F    68 48000152     push    52010048
0040B454    E8 60130000     call    注册.0040C7B9
0040B459    83C4 18         add     esp, 18
0040B45C    68 02000080     push    80000002
0040B461    6A 00           push    0
0040B463    68 01000000     push    1
0040B468    6A 00           push    0
0040B46A    6A 00           push    0
0040B46C    6A 00           push    0
0040B46E    68 01000100     push    10001
0040B473    68 47000106     push    6010047
0040B478    68 48000152     push    52010048
0040B47D    68 03000000     push    3
0040B482    BB 20030000     mov     ebx, 320
0040B487    E8 33130000     call    注册.0040C7BF
0040B48C    83C4 28         add     esp, 28
0040B48F    8BE5            mov     esp, ebp
0040B491    5D              pop     ebp
0040B492    C3              retn

却没看到相关注册算法什么的,没什么气馁,要这么简单,反而偶才郁闷 :-)

再次F2取消断点后,点击主界面的注册按钮,进入了注册窗口界面了;输入注册名aCaFeeL,注册码1234567890,没有反映,晕!
再看EcE中,发现注册名输入框1中有变动事件,呵呵,进入一看,果然是呀!

*******************************************
注册码第1部分:(注册码输入框1->内容被改变)
*******************************************
0040B6F0    55              push    ebp
0040B6F1    8BEC            mov     ebp, esp
0040B6F3    81EC 3C000000   sub     esp, 3C
0040B6F9    68 00000000     push    0
0040B6FE    BB C4060000     mov     ebx, 6C4                         ; 取硬盘特征字
0040B703    E8 B7100000     call    注册.0040C7BF
0040B708    83C4 04         add     esp, 4
0040B70B    8945 FC         mov     dword ptr [ebp-4], eax
0040B70E    68 00000000     push    0
0040B713    BB C4060000     mov     ebx, 6C4                         ; 取硬盘特征字
0040B718    E8 A2100000     call    注册.0040C7BF
0040B71D    83C4 04         add     esp, 4
0040B720    8945 F0         mov     dword ptr [ebp-10], eax
0040B723    DB45 F0         fild    dword ptr [ebp-10]               ; 运行后装入整数(机器码)到ST0
0040B726    DD5D F0         fstp    qword ptr [ebp-10]               ; 再执行一次ST0出栈操作->ST7
0040B729    DD45 F0         fld     qword ptr [ebp-10]               ; 装入实数(机器码)到ST0
0040B72C    DC35 00924000   fdiv    qword ptr [409200]               ; * 除法:ST0/3->ST0 *
0040B732    DD5D E8         fstp    qword ptr [ebp-18]               ; 再执行一次ST0出栈操作
0040B735    DB45 FC         fild    dword ptr [ebp-4]                ; 装入整数(机器码)到ST0
0040B738    DD5D E0         fstp    qword ptr [ebp-20]               ; 再执行一次ST0出战操作->st7
0040B73B    DD45 E0         fld     qword ptr [ebp-20]               ; 装入实数(机器码)到ST0
0040B73E    DC45 E8         fadd    qword ptr [ebp-18]               ; * 加发:ST0+ST0/3 -> ST0 *
0040B741    DD5D D8         fstp    qword ptr [ebp-28]
0040B744    DD45 D8         fld     qword ptr [ebp-28]
0040B747    DC25 08924000   fsub    qword ptr [409208]               ; * 减法:ST0-616583 -> ST0 *
0040B74D    DD5D D0         fstp    qword ptr [ebp-30]
0040B750    DD45 D0         fld     qword ptr [ebp-30]
0040B753    E8 71FFFFFF     call    注册.0040B6C9
0040B758    68 01030080     push    80000301                         ; 整数型 -> EAX
0040B75D    6A 00           push    0
0040B75F    50              push    eax
0040B760    68 01000000     push    1
0040B765    BB D4010000     mov     ebx, 1D4                         ; 取十六进制文本
0040B76A    E8 50100000     call    注册.0040C7BF
0040B76F    83C4 10         add     esp, 10
0040B772    8945 CC         mov     dword ptr [ebp-34], eax
0040B775    6A FF           push    -1
0040B777    6A 08           push    8                                ; 内容
0040B779    68 39000116     push    16010039
0040B77E    68 36000152     push    52010036
0040B783    E8 3D100000     call    注册.0040C7C5
0040B788    83C4 10         add     esp, 10
0040B78B    8945 C8         mov     dword ptr [ebp-38], eax
0040B78E    8B45 CC         mov     eax, dword ptr [ebp-34]
0040B791    50              push    eax
0040B792    FF75 C8         push    dword ptr [ebp-38]
0040B795    E8 F0F9FFFF     call    注册.0040B18A
0040B79A    83C4 08         add     esp, 8
0040B79D    83F8 00         cmp     eax, 0
0040B7A0    B8 00000000     mov     eax, 0
0040B7A5    0F94C0          sete    al
0040B7A8    8945 C4         mov     dword ptr [ebp-3C], eax
0040B7AB    8B5D C8         mov     ebx, dword ptr [ebp-38]
0040B7AE    85DB            test    ebx, ebx
0040B7B0    74 09           je      short 注册.0040B7BB
0040B7B2    53              push    ebx
0040B7B3    E8 FB0F0000     call    注册.0040C7B3
0040B7B8    83C4 04         add     esp, 4
0040B7BB    8B5D CC         mov     ebx, dword ptr [ebp-34]
0040B7BE    85DB            test    ebx, ebx
0040B7C0    74 09           je      short 注册.0040B7CB
0040B7C2    53              push    ebx
0040B7C3    E8 EB0F0000     call    注册.0040C7B3
0040B7C8    83C4 04         add     esp, 4
0040B7CB    837D C4 00      cmp     dword ptr [ebp-3C], 0
0040B7CF    0F84 22000000   je      注册.0040B7F7                      ; 成功便跳
0040B7D5    6A 00           push    0
0040B7D7    68 00000000     push    0
0040B7DC    6A FF           push    -1
0040B7DE    6A 06           push    6                                  ; 禁止“注册码二”
0040B7E0    68 3A000116     push    1601003A
0040B7E5    68 36000152     push    52010036
0040B7EA    E8 CA0F0000     call    注册.0040C7B9
0040B7EF    83C4 18         add     esp, 18
0040B7F2    E9 00000000     jmp     注册.0040B7F7
0040B7F7    8BE5            mov     esp, ebp
0040B7F9    5D              pop     ebp
0040B7FA    C3              retn

通过上面偶看到,注册码第1部分只是机器码参与运算;如:我的机器码为:1347718751;
则运算为:(机器码+机器码/3)-616583 =(1347718751+1347718751/3)-616583 = 1796341751;
转换为16进制(int->hex)后为:6B11FFF7;

同样道理,进入注册码第2部分,
*****************************************
注册码第2部分:(注册码输入框2->内容被改变)
*****************************************
0040B493    55              push    ebp
0040B494    8BEC            mov     ebp, esp
0040B496    81EC 0C000000   sub     esp, 0C
0040B49C    6A FF           push    -1
0040B49E    6A 08           push    8
0040B4A0    68 3A000116     push    1601003A
0040B4A5    68 36000152     push    52010036
0040B4AA    E8 16130000     call    注册.0040C7C5
0040B4AF    83C4 10         add     esp, 10
0040B4B2    8945 FC         mov     dword ptr [ebp-4], eax
0040B4B5    68 04000080     push    80000004                         ; 文本型
0040B4BA    6A 00           push    0
0040B4BC    8B45 FC         mov     eax, dword ptr [ebp-4]
0040B4BF    85C0            test    eax, eax
0040B4C1    75 05           jnz     short 注册.0040B4C8
0040B4C3    B8 3D914000     mov     eax, 注册.0040913D
0040B4C8    50              push    eax
0040B4C9    68 01000000     push    1
0040B4CE    BB 30010000     mov     ebx, 130                         ; 取文本长度
0040B4D3    E8 E7120000     call    注册.0040C7BF
0040B4D8    83C4 10         add     esp, 10
0040B4DB    8945 F8         mov     dword ptr [ebp-8], eax
0040B4DE    8B5D FC         mov     ebx, dword ptr [ebp-4]
0040B4E1    85DB            test    ebx, ebx
0040B4E3    74 09           je      short 注册.0040B4EE
0040B4E5    53              push    ebx
0040B4E6    E8 C8120000     call    注册.0040C7B3
0040B4EB    83C4 04         add     esp, 4
0040B4EE    837D F8 08      cmp     dword ptr [ebp-8], 8              ; 是否为8位数
0040B4F2    0F85 C6010000   jnz     注册.0040B6BE                     ; 不能跳
0040B4F8    6A FF           push    -1
0040B4FA    6A 08           push    8                                ; 内容
0040B4FC    68 3A000116     push    1601003A
0040B501    68 36000152     push    52010036
0040B506    E8 BA120000     call    注册.0040C7C5
0040B50B    83C4 10         add     esp, 10
0040B50E    8945 FC         mov     dword ptr [ebp-4], eax
0040B511    68 01030080     push    80000301                         ; 整数型
0040B516    6A 00           push    0
0040B518    68 01000000     push    1
0040B51D    68 04000080     push    80000004                         ; 文本型
0040B522    6A 00           push    0
0040B524    8B45 FC         mov     eax, dword ptr [ebp-4]
0040B527    85C0            test    eax, eax
0040B529    75 05           jnz     short 注册.0040B530
0040B52B    B8 3D914000     mov     eax, 注册.0040913D                 ;常量
0040B530    50              push    eax
0040B531    68 02000000     push    2
0040B536    BB 34010000     mov     ebx, 134                         ; 取文本左边
0040B53B    E8 7F120000     call    注册.0040C7BF
0040B540    83C4 1C         add     esp, 1C
0040B543    8945 F8         mov     dword ptr [ebp-8], eax
0040B546    8B5D FC         mov     ebx, dword ptr [ebp-4]
0040B549    85DB            test    ebx, ebx
0040B54B    74 09           je      short 注册.0040B556
0040B54D    53              push    ebx
0040B54E    E8 60120000     call    注册.0040C7B3
0040B553    83C4 04         add     esp, 4
0040B556    68 FC914000     push    注册.004091FC                      ; C
0040B55B    FF75 F8         push    dword ptr [ebp-8]
0040B55E    E8 27FCFFFF     call    注册.0040B18A
0040B563    83C4 08         add     esp, 8
0040B566    83F8 00         cmp     eax, 0
0040B569    B8 00000000     mov     eax, 0
0040B56E    0F94C0          sete    al
0040B571    8945 F4         mov     dword ptr [ebp-C], eax
0040B574    8B5D F8         mov     ebx, dword ptr [ebp-8]
0040B577    85DB            test    ebx, ebx
0040B579    74 09           je      short 注册.0040B584
0040B57B    53              push    ebx
0040B57C    E8 32120000     call    注册.0040C7B3
0040B581    83C4 04         add     esp, 4
0040B584    837D F4 00      cmp     dword ptr [ebp-C], 0
0040B588    0F84 12010000   je      注册.0040B6A0                    ; ??
0040B58E    6A FF           push    -1
0040B590    6A 08           push    8                                ; 内容
0040B592    68 3A000116     push    1601003A
0040B597    68 36000152     push    52010036
0040B59C    E8 24120000     call    注册.0040C7C5
0040B5A1    83C4 10         add     esp, 10
0040B5A4    8945 FC         mov     dword ptr [ebp-4], eax
0040B5A7    68 01030080     push    80000301                         ; 整数型
0040B5AC    6A 00           push    0
0040B5AE    68 01000000     push    1
0040B5B3    68 04000080     push    80000004                         ; 文本型
0040B5B8    6A 00           push    0
0040B5BA    8B45 FC         mov     eax, dword ptr [ebp-4]
0040B5BD    85C0            test    eax, eax
0040B5BF    75 05           jnz     short 注册.0040B5C6
0040B5C1    B8 3D914000     mov     eax, 注册.0040913D                 ;常量
0040B5C6    50              push    eax
0040B5C7    68 02000000     push    2
0040B5CC    BB 38010000     mov     ebx, 138                         ; 取文本右边
0040B5D1    E8 E9110000     call    注册.0040C7BF
0040B5D6    83C4 1C         add     esp, 1C
0040B5D9    8945 F8         mov     dword ptr [ebp-8], eax
0040B5DC    8B5D FC         mov     ebx, dword ptr [ebp-4]
0040B5DF    85DB            test    ebx, ebx
0040B5E1    74 09           je      short 注册.0040B5EC
0040B5E3    53              push    ebx
0040B5E4    E8 CA110000     call    注册.0040C7B3
0040B5E9    83C4 04         add     esp, 4
0040B5EC    68 FE914000     push    注册.004091FE                      ; Y
0040B5F1    FF75 F8         push    dword ptr [ebp-8]
0040B5F4    E8 91FBFFFF     call    注册.0040B18A
0040B5F9    83C4 08         add     esp, 8
0040B5FC    83F8 00         cmp     eax, 0
0040B5FF    B8 00000000     mov     eax, 0
0040B604    0F94C0          sete    al
0040B607    8945 F4         mov     dword ptr [ebp-C], eax
0040B60A    8B5D F8         mov     ebx, dword ptr [ebp-8]
0040B60D    85DB            test    ebx, ebx
0040B60F    74 09           je      short 注册.0040B61A
0040B611    53              push    ebx
0040B612    E8 9C110000     call    注册.0040C7B3
0040B617    83C4 04         add     esp, 4
0040B61A    837D F4 00      cmp     dword ptr [ebp-C], 0
0040B61E    0F84 3E000000   je      注册.0040B662
0040B624    833D B44CD200 0>cmp     dword ptr [D24CB4], 0
0040B62B    0F85 0F000000   jnz     注册.0040B640
0040B631    C705 B44CD200 0>mov     dword ptr [D24CB4], 4
0040B63B    E9 00000000     jmp     注册.0040B640
0040B640    6A 00           push    0
0040B642    68 00000000     push    0
0040B647    6A FF           push    -1
0040B649    6A 06           push    6                                ; 禁止->注册码三
0040B64B    68 3B000116     push    1601003B
0040B650    68 36000152     push    52010036
0040B655    E8 5F110000     call    注册.0040C7B9
0040B65A    83C4 18         add     esp, 18
0040B65D    E9 1C000000     jmp     注册.0040B67E
0040B662    833D B44CD200 0>cmp     dword ptr [D24CB4], 0
0040B669    0F85 0F000000   jnz     注册.0040B67E
0040B66F    C705 B44CD200 0>mov     dword ptr [D24CB4], 3
0040B679    E9 00000000     jmp     注册.0040B67E
0040B67E    6A 00           push    0
0040B680    68 00000000     push    0
0040B685    6A FF           push    -1
0040B687    6A 06           push    6                                ; 禁止->注册码三
0040B689    68 3B000116     push    1601003B
0040B68E    68 36000152     push    52010036
0040B693    E8 21110000     call    注册.0040C7B9
0040B698    83C4 18         add     esp, 18
0040B69B    E9 19000000     jmp     注册.0040B6B9
0040B6A0    833D B44CD200 0>cmp     dword ptr [D24CB4], 0
0040B6A7    0F85 0C000000   jnz     注册.0040B6B9
0040B6AD    8305 B44CD200 0>add     dword ptr [D24CB4], 2
0040B6B4    E9 00000000     jmp     注册.0040B6B9
0040B6B9    E9 07000000     jmp     注册.0040B6C5
0040B6BE    8305 B44CD200 0>add     dword ptr [D24CB4], 0F
0040B6C5    8BE5            mov     esp, ebp
0040B6C7    5D              pop     ebp
0040B6C8    C3              retn

通过上面看到,没有算法,但有检测了,要让第三个注册码输入框3激活,第二个注册码输入框2的内容应先为:PYxxxxxY的格式,凑够8位数,

以便开启第三个注册码输入框;

第三个注册框没有内容改动触发的事件了,但是有个’时钟周期的检测运算’:

0040BECF    55              push    ebp                              ; 时钟周期事件
0040BED0    8BEC            mov     ebp, esp
0040BED2    81EC 1C000000   sub     esp, 1C
0040BED8    6A FF           push    -1
0040BEDA    6A 08           push    8
0040BEDC    68 3B000116     push    1601003B                         ; 注册码三编辑框
0040BEE1    68 36000152     push    52010036
0040BEE6    E8 DA080000     call    注册.0040C7C5
0040BEEB    83C4 10         add     esp, 10
0040BEEE    8945 FC         mov     dword ptr [ebp-4], eax
0040BEF1    68 21010000     push    121                              ; DW520ZCY
0040BEF6    FF75 FC         push    dword ptr [ebp-4]
0040BEF9    E8 8CF2FFFF     call    注册.0040B18A                    ; 检测
0040BEFE    83C4 08         add     esp, 8
0040BF01    83F8 00         cmp     eax, 0
0040BF04    B8 00000000     mov     eax, 0
0040BF09    0F94C0          sete    al
0040BF0C    8945 F8         mov     dword ptr [ebp-8], eax
0040BF0F    8B5D FC         mov     ebx, dword ptr [ebp-4]
0040BF12    85DB            test    ebx, ebx
0040BF14    74 09           je      short 注册.0040BF1F
0040BF16    53              push    ebx
0040BF17    E8 97080000     call    注册.0040C7B3
0040BF1C    83C4 04         add     esp, 4
0040BF1F    837D F8 00      cmp     dword ptr [ebp-8], 0
0040BF23    0F84 5B010000   je      注册.0040C084                      ; ??
0040BF29    833D 08000000 0>cmp     dword ptr [8], 0
0040BF30    0F85 0D000000   jnz     注册.0040BF43
0040BF36    8305 04000000 0>add     dword ptr [4], 4
0040BF3D    FF05 08000000   inc     dword ptr [8]
0040BF43    68 01060080     push    80000601
0040BF48    68 00002040     push    40200000
0040BF4D    68 00000000     push    0
0040BF52    DB05 04000000   fild    dword ptr [4]                    ; 十进制 -> ST0
0040BF58    DD5D F8         fstp    qword ptr [ebp-8]                ; ST0 -> St7
0040BF5B    68 01060080     push    80000601
0040BF60    FF75 FC         push    dword ptr [ebp-4]
0040BF63    FF75 F8         push    dword ptr [ebp-8]
0040BF66    68 02000000     push    2
0040BF6B    BB 48000000     mov     ebx, 48                          ; 求余数 mod
0040BF70    E8 4A080000     call    注册.0040C7BF
0040BF75    83C4 1C         add     esp, 1C
0040BF78    8945 E8         mov     dword ptr [ebp-18], eax
0040BF7B    8955 EC         mov     dword ptr [ebp-14], edx
0040BF7E    DD45 E8         fld     qword ptr [ebp-18]
0040BF81    D9E4            ftst                                     ; St0与0比较
0040BF83    DFE0            fstsw   ax                               ; 保存状态字的值->AX
0040BF85    F6C4 01         test    ah, 1                            ; 与1比较
0040BF88    74 02           je      short 注册.0040BF8C
0040BF8A    D9E0            fchs
0040BF8C    DC1D 2A010000   fcomp   qword ptr [12A]                  ; 实数比较 ST0-??(2)的结果标志位
0040BF92    DFE0            fstsw   ax                               ; 保存状态字的值->AX
0040BF94    F6C4 41         test    ah, 41                           ; 与41(65)比较
0040BF97    0F84 E2000000   je      注册.0040C07F
0040BF9D    6A 00           push    0
0040BF9F    68 00000000     push    0
0040BFA4    6A FF           push    -1
0040BFA6    6A 05           push    5                                ; 可视“注册1”
0040BFA8    68 3E000116     push    1601003E
0040BFAD    68 36000152     push    52010036
0040BFB2    E8 02080000     call    注册.0040C7B9
0040BFB7    83C4 18         add     esp, 18
0040BFBA    6A 00           push    0
0040BFBC    68 01000000     push    1
0040BFC1    6A FF           push    -1
0040BFC3    6A 06           push    6                                ; 禁止“注册”
0040BFC5    68 3C000116     push    1601003C
0040BFCA    68 36000152     push    52010036
0040BFCF    E8 E5070000     call    注册.0040C7B9
0040BFD4    83C4 18         add     esp, 18
0040BFD7    6A FF           push    -1
0040BFD9    6A 08           push    8                                ; 内容
0040BFDB    68 3A000116     push    1601003A
0040BFE0    68 36000152     push    52010036
0040BFE5    E8 DB070000     call    注册.0040C7C5
0040BFEA    83C4 10         add     esp, 10
0040BFED    8945 FC         mov     dword ptr [ebp-4], eax
0040BFF0    68 32010000     push    132                              ; 12345678
0040BFF5    FF75 FC         push    dword ptr [ebp-4]
0040BFF8    E8 8DF1FFFF     call    注册.0040B18A
0040BFFD    83C4 08         add     esp, 8
0040C000    83F8 00         cmp     eax, 0
0040C003    B8 00000000     mov     eax, 0
0040C008    0F94C0          sete    al
0040C00B    8945 F8         mov     dword ptr [ebp-8], eax
0040C00E    8B5D FC         mov     ebx, dword ptr [ebp-4]
0040C011    85DB            test    ebx, ebx
0040C013    74 09           je      short 注册.0040C01E
0040C015    53              push    ebx
0040C016    E8 98070000     call    注册.0040C7B3
0040C01B    83C4 04         add     esp, 4
0040C01E    837D F8 00      cmp     dword ptr [ebp-8], 0
0040C022    0F84 57000000   je      注册.0040C07F
0040C028    6A FF           push    -1
0040C02A    6A 08           push    8                                ; 内容(“用户名”)
0040C02C    68 38000116     push    16010038
0040C031    68 36000152     push    52010036
0040C036    E8 8A070000     call    注册.0040C7C5
0040C03B    83C4 10         add     esp, 10
0040C03E    8945 FC         mov     dword ptr [ebp-4], eax
0040C041    8B45 FC         mov     eax, dword ptr [ebp-4]
0040C044    50              push    eax
0040C045    8B1D 00000000   mov     ebx, dword ptr [0]
0040C04B    85DB            test    ebx, ebx
0040C04D    74 09           je      short 注册.0040C058
0040C04F    53              push    ebx
0040C050    E8 5E070000     call    注册.0040C7B3
0040C055    83C4 04         add     esp, 4
0040C058    58              pop     eax
0040C059    A3 00000000     mov     dword ptr [0], eax
0040C05E    68 01000100     push    10001
0040C063    68 35000106     push    6010035                          ; 窗口2(注册窗口)
0040C068    68 36000152     push    52010036
0040C06D    68 01000000     push    1
0040C072    BB 60030000     mov     ebx, 360                         ; 销毁
0040C077    E8 43070000     call    注册.0040C7BF
0040C07C    83C4 10         add     esp, 10
0040C07F    E9 00000000     jmp     注册.0040C084
0040C084    8BE5            mov     esp, ebp
0040C086    5D              pop     ebp
0040C087    C3              retn                                     ; 结束

通过上面看到,时钟周期内检测运算为:注册码3部分固定为:DW520ZCY字符串;注册码2部分固定为:12345678字符串。

这不是奇怪了了吗?明明注册码2应为PYxxxxxY格式,怎么又要为12345678了?呵呵,那一定是 爱在天涯 兄的这个东东还有检测了。忘了‘注

册码输入框2的内容被改变事件’了吗?它检查的就是时钟周期事件与注册码输入框2的内容被改变事件相配合,体现的便是回写这个思路呀!
呵呵,一个很好的检测思路,偶咋从没有想起过呐!厉害的 爱在天涯 兄弟,向他学习。

一组可用的注册信息:

注册名:aCaFeeL
第一次输入的注册码:6B11FFF7-CY11111Y-DW520ZCY
第二次输入的注册码: 6B11FFF7-12345678-DW520ZCY

然后稍等一下。

既然了解了 爱在天涯 兄的思路,那么偶自己也照做一个来玩玩,嘿嘿。

通过上面的分析后得知,该CrackMe的保护思路为:

1。注册界面中的注册码输入框1内容被改变事件实施检测,符合便激活注册码输入框2,使其可用;
2。注册码输入框2内容被改变事件实施检测,符合CYxxxxxY格式便激活注册码输入框3,使其可用;
3。注册界面中的时钟事件检测注册码输入框3中的内容(要配合注册码输入框2中的内容被改动,才能符合);
4。如符合,注册界面中的时钟事件再检测注册码输入框2中的内容;
5。主界面中的时钟事件同时检测注册界面传过来的消息,一旦符合,便OK。(这里还大有文章可作呀,嘿嘿)

附上Delphi写的KeyGen源码: keygenSRC.rar

附上易语言写的
一个模仿爱在天涯兄弟的检测程序: 请到四楼继续看->

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
打赏
分享
最新回复 (14)
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
壹只老虎 7 2007-4-14 01:51
2
0
太牛了!强烈支持!
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
爱在天涯 3 2007-4-14 17:24
3
0
兄弟厉害呀!

虽然没有对注册码做大文章  但是在注册验证方面还是比较另类的!

看来兄弟确实实力比较强呀!

没想到分析得这么清楚,呵呵!

我编这个破解练习的时候差点都晕了!

厉害,有时间我还做个更另类的送兄弟!

再有一个,请兄弟以后看到我的软件的时候(为了生活,准备编写软件卖)就算真要写破解分析,破解分析也别说的那么详细呀!

呵呵
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
zcg 2007-4-14 21:30
4
0
占个地方!嘿嘿!
雪    币: 333
活跃值: (116)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
acafeel 14 2007-4-14 21:37
5
0
楼上好多的PLMM呀!流鼻血中。。。
才发现 爱在天涯 也来了呀!那里不对,还请指正!呵呵

晕,才发现没有上传完全,此处继续接上面一楼的,附上易语言写的一个模仿爱在天涯兄弟的检测程序:


相应的源代码:

<<启动窗口>>
.版本 2
.支持库 xplib

.程序集 _启动窗口_程序集

.子程序 __启动窗口_创建完毕

XP风格 (#蓝色风格)

.子程序 _窗口时钟_周期事件

' 发现一个问题:
.如果真 (_启动窗口.超级链接框.标题 ≠ “My Web: http://acafeel.ys168.com”)
    ' 成功
    _启动窗口.窗口时钟.时钟周期 = 0
    信息框 (“恭喜-” + 取文本中间 (_启动窗口.超级链接框.标题, 8, 10) + “-,你已经成功注册了.不过这次未对注册算法优化,也没有用到加密算法!”, 0, )
    信息框 (“不过你真的可以算是够历害的啦,兄弟该不是爆的吧!!!”, 0, )
    信息框 (“有些另类吧,下次会再加强一些的,谢谢你的支持和参与!!!”, 0, )
.如果真结束

.子程序 _按钮min_被单击

位置 = 2  ' 最小化

.子程序 _按钮close_被单击

销毁 ()  ' 销毁窗口

.子程序 _按钮reg_被单击

载入 (_注册窗口, _启动窗口, 真)

<<注册窗口>>
.版本 2

.程序集 _注册窗口_程序集

.子程序 __注册窗口_创建完毕

编辑框ID.内容 = 到文本 (取硬盘特征字 ())

.子程序 _编辑框Name_内容被改变

' 注册名必须大于3位数
.如果真 (取文本长度 (编辑框Name.内容) > 2)
    编辑框Code1.禁止 = 假
    ' 编辑框Code1.禁止 = 真
    ' 注册时钟.时钟周期 = 1
.如果真结束

.子程序 _编辑框Code1_内容被改变

' 算法检测
.如果真 (取文本长度 (编辑框Code1.内容) = 8)
    .如果 (编辑框Code1.内容 = 取十六进制文本 (取整 (取硬盘特征字 () + 取硬盘特征字 () ÷ 3 - 616583)))
        编辑框Code2.禁止 = 假
    .否则
        ' 编辑框Code2.禁止 = 真
    .如果结束
    ' 注册时钟.时钟周期 = 1
.如果真结束

.子程序 _编辑框Code2_内容被改变

' 格式检测
.如果真 (取文本长度 (编辑框Code2.内容) = 8)
    .如果真 (取文本左边 (编辑框Code2.内容, 2) = “CY”)
        .如果真 (取文本右边 (编辑框Code2.内容, 1) = “Y”)
            编辑框Code3.禁止 = 假
            ' 激活注册时钟,开始检测
            注册时钟.时钟周期 = 1000  ' 单位为毫秒
        .如果真结束

    .如果真结束

.如果真结束

.子程序 _注册时钟_周期事件

' 回检方式
.如果真 (取文本长度 (编辑框Code3.内容) = 8)
    .如果真 (编辑框Code3.内容 = “DW520ZCY”)
        注册按钮.禁止 = 真
        .如果真 (编辑框Code2.内容 = “12345678”)
            测试按钮.可视 = 真
            _启动窗口.超级链接框.标题 = “注册给:” + 编辑框Name.内容
            _启动窗口.超级链接框.禁止 = 真
            _注册窗口.销毁 ()
        .如果真结束

    .如果真结束

.如果真结束

.子程序 _注册按钮_被单击

_注册窗口.销毁 ()

.子程序 _退出按钮_被单击

_注册窗口.销毁 ()

好,先放一个框架在这里了,以后慢慢再来修复、添加代码了!也欢迎大家一起来讨论、指正!

2007.4.14 代码第一次修改
2007.4.16 代码第二次修改
2007.4.19 应李东国的要求放出源代码
上传的附件:
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
爱在天涯 3 2007-4-15 07:47
6
0
我的源码要是给你看一下,你会晕的!  我写的比较乱!
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
壹只老虎 7 2007-4-15 08:19
7
0
强!!!
这个皮肤不错!
等下传一个给偶!
嘿嘿!
雪    币: 333
活跃值: (116)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
acafeel 14 2007-4-15 21:24
8
0
爱在天涯兄,我才在学习易语言,在你面前班门弄斧了,不要笑我呀!嘿嘿

老虎,下次网上碰到就传给你!呵呵
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
爱在天涯 3 2007-4-17 08:41
9
0
我也不是高手!

我的破解练习是分的步骤比你的细些! 好多是分开检查的!我记得  输入注册信息时,只能复制才能

成功,一个一个输入,就会不成功! 等

你能把我编的破解练习还原成这个,真是令人佩服 惊讶!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
好学者 2007-4-17 11:07
10
0
经典!!!!!!!!!!1
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
好学者 2007-4-17 11:08
11
0
要好好学习才行~
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
李东国 2007-4-19 11:41
12
0
发个e源码来,强烈学习
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
李东国 2007-4-19 12:08
13
0
发个e源码来,强烈学习
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zbkzj 2007-5-8 10:50
14
0
哎,真是经典呀,学习了!
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wake 2007-6-17 23:24
15
0
牛人间的对话
游客
登录 | 注册 方可回帖
返回