首页
社区
课程
招聘
[原创]我的crack me 2.0
发表于: 2008-6-19 22:11 10924

[原创]我的crack me 2.0

2008-6-19 22:11
10924
首先,在此感谢我群里的兄弟不断的为的我crack me做测试,给我提出各种的意见!谢谢你们!
        还要谢谢,kanxue老大对我的帮助!没有你给我的资料,我写不出这个crack me(虽然这个crack me现在还漏洞百出!)。
        但是我会不断努力,不让你们失望的!

        这个程序是我的第二个CRACK ME,是在吸取了第一个crack me中的问题时候修改的第二个版本!
        保护方式如下:
        1、程序没有被加壳
        2、只是自己根据用户名简单的转换了一下字符串作为注册码
        3、为了防止明码比较,我对字符串使用了RSA算法加密!
        4、为了防止被爆破,对字符串进行了拆分,分开比较!
        5、对提示信息的字符串进行了最简单的加密,防止大家根据提示信息爆破软件!

        没有什么太高深的技术可言,因此高手可以飘过!跟我一样的菜菜们可以研究一下!
        我希望各位老大能把你们的分析过程帖出来,我们一起学习进步!
        如果哪位大哥可以写出注册机的话,希望您能把自己的代码帖出来,让我也学习一下!

测试用户名:boatcjz
测试注册码:515511-170502-141151

                                                                                                                        美丽の破船
                                                                                                                       2008年6月19日

                                                                                                                讨论论坛:http://bbs.pediy.com/

提示:上一个版本的crack me地址在这里:http://bbs.pediy.com/showthread.php?t=66694

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (28)
雪    币: 261
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
非常感谢你通知我第一个试玩,只能说你牛马上就能改变了这缺点!现在轮到我们这种菜鸟苦了!真的进步不少!我想以我现在这么水的程度是不可能破的了!希望大牛们来玩吧!
2008-6-19 23:18
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ppt
3
好东西,顶一个!
上传的附件:
2008-6-19 23:34
0
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
范范love
515511-175562-141151
上传的附件:
2008-6-20 00:49
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=ppt;469245]好东西,顶一个![/QUOTE]


原来群里的朋友这么多人都在这个坛子哦`~~~
你用的2.0,提示信息没有处理过!
2.1的把提示信息经过了简单的处理!
2008-6-20 07:43
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
这次又是哪里出问题了?
哪位大哥给指教一下啊!
2008-6-20 08:22
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
242245872125
lunglungyu
505521-071542-041050

成功了
2008-6-20 16:13
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
8
242245872125
clide2000
565561-671502-642656

今天看了一下,并没有达到楼主所要的强度。
说一下简单的方法。
下bp MessageBoxA,中断后,就可以返回到对注册验证的子程序中了。
由于在比较之前,先对真正的注册码进加密,所在真正的注册明文,还是直接也可看到的
建议作才自己也调试一下,就明白了。
00402EA9   .^\7C AF          jl short CRACKME.00402E5A
00402EAB   > \8D4C24 40      lea ecx, dword ptr ss:[esp+40]    '到这里,EAX中放的就是真注册码了
00402EAF   .  6A 06          push 6
00402EB1   .  51             push ecx
00402EB2   .  8D4C24 1C      lea ecx, dword ptr ss:[esp+1C]
00402EB6   .  E8 33070000    call <jmp.&MFC42.#4129>
.
.
.
00402F25   .  E8 6A060000    call <jmp.&MFC42.#535>   '第一处验证
00402F2A   .  8BCE           mov ecx, esi
00402F2C   .  889C24 8800000>mov byte ptr ss:[esp+88], bl
00402F33   .  E8 88FAFFFF    call CRACKME.004029C0
00402F38   .  85C0           test eax, eax
00402F3A   .  0F85 95000000  jnz CRACKME.00402FD5
.
.
.
00403041   .  C68424 8C00000>mov byte ptr ss:[esp+8C], 19    '第二处验证

00403049   .  E8 46050000    call <jmp.&MFC42.#535>
0040304E   .  8BCE           mov ecx, esi
00403050   .  889C24 8800000>mov byte ptr ss:[esp+88], bl
00403057   .  E8 64F9FFFF    call CRACKME.004029C0
0040305C   .  85C0           test eax, eax
0040305E   .  0F85 A3000000  jnz CRACKME.00403107
.
.
.
0040317D   .  E8 12040000    call <jmp.&MFC42.#535>      '第三处验证

00403182   .  8BCE           mov ecx, esi
00403184   .  889C24 8800000>mov byte ptr ss:[esp+88], bl
0040318B   .  E8 30F8FFFF    call CRACKME.004029C0
00403190   .  85C0           test eax, eax
00403192   .  8D7E 70        lea edi, dword ptr ds:[esi+70]
00403195   .  0F85 D7000000  jnz CRACKME.00403272

如果爆破的话,把上面三处jnz改成jmp.然后随便输入xxxxxx-yyyyyy-zzzzzz就可以了
2008-6-20 16:56
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
9
恩,我自己也跟了一下:
应用笔记的程序:    CRACKME                              2008-6-20 8:08:45

00402A50    6A FF           push -1
00402A52    68 903E4000     push CRACKME.00403E90
00402A57    64:A1 00000000  mov eax,dword ptr fs:[0]
00402A5D    50              push eax
00402A5E    64:8925 0000000>mov dword ptr fs:[0],esp
00402A65    83EC 68         sub esp,68
00402A68    53              push ebx
00402A69    55              push ebp
00402A6A    56              push esi
00402A6B    57              push edi
00402A6C    8BF1            mov esi,ecx
00402A6E    6A 01           push 1
00402A70    E8 850B0000     call <jmp.&MFC42.#6334>                           ; 得到用户名
00402A75    8D7E 78         lea edi,dword ptr ds:[esi+78]
00402A78    8BCF            mov ecx,edi
00402A7A    E8 750B0000     call <jmp.&MFC42.#4204>                           ; 得到注册码
00402A7F    8D4C24 30       lea ecx,dword ptr ss:[esp+30]
00402A83    E8 120B0000     call <jmp.&MFC42.#540>

...

00402AF1    8B46 7C         mov eax,dword ptr ds:[esi+7C]
00402AF4    C68424 80000000>mov byte ptr ss:[esp+80],6
00402AFC    8B48 F8         mov ecx,dword ptr ds:[eax-8]
00402AFF    85C9            test ecx,ecx                                      ; 判断用户名是否为空
00402B01    0F84 CB070000   je CRACKME.004032D2
00402B07    8B07            mov eax,dword ptr ds:[edi]
00402B09    8B48 F8         mov ecx,dword ptr ds:[eax-8]
00402B0C    85C9            test ecx,ecx                                      ; 判断注册码是否为空
00402B0E    0F84 BE070000   je CRACKME.004032D2
00402B14    8BC1            mov eax,ecx
00402B16    83F8 14         cmp eax,14                                        ; 注册码是否为20位
00402B19    0F84 A6000000   je CRACKME.00402BC5

00402BB2    E8 09080000     call <jmp.&MFC42.#800>
00402BB7    8B4C24 10       mov ecx,dword ptr ss:[esp+10]
00402BBB    6A 00           push 0
00402BBD    6A 00           push 0
00402BBF    51              push ecx
00402BC0    E9 15070000     jmp CRACKME.004032DA                              ; 如果不是就跳

004032DA    8BCE            mov ecx,esi
004032DC    E8 EF020000     call <jmp.&MFC42.#4224>                           ; 提示注册失败!

00402BC5    8D5424 3C       lea edx,dword ptr ss:[esp+3C]                     ; 如果是20位,就跳到这里,继续
00402BC9    6A 06           push 6
00402BCB    52              push edx
00402BCC    8BCF            mov ecx,edi
00402BCE    E8 1B0A0000     call <jmp.&MFC42.#4129>

.....                                                                                //对用户输入的假注册码进行处理!

00402C9E    8BCE            mov ecx,esi
00402CA0    E8 EBFAFFFF     call CRACKME.00402790
00402CA5    8BCE            mov ecx,esi
00402CA7    E8 34FBFFFF     call CRACKME.004027E0
00402CAC    8BCD            mov ecx,ebp
00402CAE    E8 41090000     call <jmp.&MFC42.#4204>
00402CB3    55              push ebp
00402CB4    8D4C24 2C       lea ecx,dword ptr ss:[esp+2C]
00402CB8    E8 D1080000     call <jmp.&MFC42.#858>
00402CBD    8D4C24 18       lea ecx,dword ptr ss:[esp+18]
00402CC1    33FF            xor edi,edi
00402CC3    E8 D2080000     call <jmp.&MFC42.#540>

.....                                                       

00402CEA    8B56 7C         mov edx,dword ptr ds:[esi+7C]                        //下面开始根据用户名计算注册码
00402CED    B3 0F           mov bl,0F
00402CEF    889C24 80000000 mov byte ptr ss:[esp+80],bl
00402CF6    897C24 34       mov dword ptr ss:[esp+34],edi
00402CFA    8B42 F8         mov eax,dword ptr ds:[edx-8]
00402CFD    85C0            test eax,eax
00402CFF    7E 7B           jle short CRACKME.00402D7C
00402D01    8D4424 44       lea eax,dword ptr ss:[esp+44]
00402D05    6A 0A           push 0A
00402D07    50              push eax
00402D08    57              push edi
00402D09    FF15 E4414000   call dword ptr ds:[<&MSVCRT._itoa>]               ; msvcrt._itoa

...                                                                                //中间过程省略

00402DA2    8B4C24 18       mov ecx,dword ptr ss:[esp+18]                        //这里是计算用户名的最后一个循环
00402DA6    8B5424 34       mov edx,dword ptr ss:[esp+34]
00402DAA    3B51 F8         cmp edx,dword ptr ds:[ecx-8]
00402DAD    75 08           jnz short CRACKME.00402DB7
00402DAF    C74424 34 00000>mov dword ptr ss:[esp+34],0
00402DB7    8B4424 14       mov eax,dword ptr ss:[esp+14]
00402DBB    8B5424 34       mov edx,dword ptr ss:[esp+34]
00402DBF    8A0407          mov al,byte ptr ds:[edi+eax]
00402DC2    8A0C11          mov cl,byte ptr ds:[ecx+edx]
00402DC5    32C1            xor al,cl
00402DC7    884C24 3C       mov byte ptr ss:[esp+3C],cl
00402DCB    3C 09           cmp al,9
00402DCD    7E 02           jle short CRACKME.00402DD1
00402DCF    B0 01           mov al,1
00402DD1    0FBED0          movsx edx,al
00402DD4    8D4C24 3C       lea ecx,dword ptr ss:[esp+3C]
00402DD8    6A 0A           push 0A
00402DDA    51              push ecx
00402DDB    52              push edx
00402DDC    FF15 E4414000   call dword ptr ds:[<&MSVCRT._itoa>]               ; msvcrt._itoa
00402DE2    83C4 0C         add esp,0C
00402DE5    8D4C24 14       lea ecx,dword ptr ss:[esp+14]
00402DE9    6A 01           push 1
00402DEB    57              push edi
00402DEC    E8 EB070000     call <jmp.&MFC42.#6648>
00402DF1    8B4424 3C       mov eax,dword ptr ss:[esp+3C]
00402DF5    8D4C24 14       lea ecx,dword ptr ss:[esp+14]
00402DF9    50              push eax
00402DFA    57              push edi
00402DFB    E8 C6050000     call <jmp.&MFC42.#6778>
00402E00    8B4C24 14       mov ecx,dword ptr ss:[esp+14]
00402E04    8D5424 40       lea edx,dword ptr ss:[esp+40]
00402E08    51              push ecx
00402E09    52              push edx
00402E0A    8BCE            mov ecx,esi
00402E0C    E8 EFFAFFFF     call CRACKME.00402900
00402E11    50              push eax
00402E12    8D4C24 18       lea ecx,dword ptr ss:[esp+18]
00402E16    C68424 84000000>mov byte ptr ss:[esp+84],11
00402E1E    E8 6B070000     call <jmp.&MFC42.#858>
00402E23    8D4C24 40       lea ecx,dword ptr ss:[esp+40]
00402E27    889C24 80000000 mov byte ptr ss:[esp+80],bl
00402E2E    E8 8D050000     call <jmp.&MFC42.#800>
00402E33    8B46 74         mov eax,dword ptr ds:[esi+74]
00402E36    8B5424 34       mov edx,dword ptr ss:[esp+34]
00402E3A    47              inc edi
00402E3B    42              inc edx
00402E3C    8B40 F8         mov eax,dword ptr ds:[eax-8]
00402E3F    895424 34       mov dword ptr ss:[esp+34],edx
00402E43    48              dec eax
00402E44    3BF8            cmp edi,eax
00402E46  ^ 0F8C 56FFFFFF   jl CRACKME.00402DA2                                //循环结束
00402E4C    8B4424 14       mov eax,dword ptr ss:[esp+14]                //这里漏出了真实的注册码!

不知道楼上的各位老大跟出这个注册码是不是因为这里的问题!!!
还有没有别的地方需要改进的哦`~~
2008-6-20 17:22
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
10
我会在研究一下,看看怎么改进的!!!
2008-6-20 17:23
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
11


另:怎么看着几具兄弟测试的机器码都是一样的呢?不知楼主是怎么取得的机器码?(没仔细看)
2008-6-20 20:23
0
雪    币: 609
活跃值: (237)
能力值: ( LV12,RANK:441 )
在线值:
发帖
回帖
粉丝
12
242245872125
Azure
545521-479542-141154

机器码也是242245872125
2008-6-21 10:32
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
242245872125

pussy

565541-671502-447456

2008-6-21 13:02
0
雪    币: 246
活跃值: (23)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
固定内置:VA: 00406148
2008-6-21 14:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这么多高人那!~~小弟无奈,爆破的……

00402B19     /0F84 A6000000 je      00402BC5                         ;  1
00402F3A     /0F85 95000000 jnz     00402FD5                         ;  2
0040305E     /0F85 A3000000 jnz     00403107                         ;  3
00403195     /0F85 D7000000 jnz     00403272                         ;  4
上传的附件:
  • 1.jpg (12.02kb,307次下载)
2008-6-21 17:10
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
16
我随便写了一个字符串做的机器码,懒的写程序取随机值了~~~~
2008-6-21 17:50
0
雪    币: 440
活跃值: (61)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
17
嘿嘿,楼上几位大牛都分析完了.

自已写个KEYGEN,问题多多,

PS: 忙中出错,刚刚回到你的第一个CM里了........
上传的附件:
2008-6-22 17:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
还不会算注册码
上传的附件:
2008-6-22 23:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
问问LZ 你说

00402E43    48              dec eax
00402E44    3BF8            cmp edi,eax
00402E46  ^ 0F8C 56FFFFFF   jl CRACKME.00402DA2        //循环结束
00402E4C    8B4424 14       mov eax,dword ptr ss:[esp+14]    //这里漏出了真实的注册码!

不知道楼上的各位老大跟出这个注册码是不是因为这里的问题!!!
还有没有别的地方需要改进的哦`~~

-----------------------------------------
为什么我只看到的是一串数字 没有看到注册码呀
我只看到的值 是
堆栈 ss:[0013F54C]=00033F10, (ASCII "521379542342")
eax=0000000B
2008-6-22 23:52
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
20
521379542342
这个字符串就是你用户名对应的注册码~
2008-6-27 21:41
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
21

真的很佩服你的耐心!
其实老实说,这个算法是我分析一个名字叫"运指如飞"的程序的注册算法的一部分!
我只是把算出来的东西,用RSA进行了加密!
我还没有写过RSA算法的注册机,看了你的程序,我也受益了!
谢谢你能耐心的分析我的程序!
也谢谢的分享!
我会好好学习反调试等方面的东西!然后继续更新我的CRACK ME!
我相信:我会写出更好的程序让大家一起进步的!
也祝你能成功!
谢谢~~
2008-6-27 21:48
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
  
上传的附件:
2008-7-18 10:16
0
雪    币: 209
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
242245872125
AAAAA
525521-272512-841852
2008-7-23 06:19
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
第三个循环结束后堆栈里有注册码……
242245872125
xixuer
525511-279542-543552
2008-7-23 16:50
0
雪    币: 175
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
还不错,支持一下了LZ
上传的附件:
2008-7-28 19:09
0
游客
登录 | 注册 方可回帖
返回
//