能力值:
( LV12,RANK:210 )
|
-
-
5 楼
[QUOTE=ppt;469245]好东西,顶一个! [/QUOTE]
原来群里的朋友这么多人都在这个坛子哦`~~~
你用的2.0,提示信息没有处理过!
2.1的把提示信息经过了简单的处理!
|
能力值:
( 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就可以了
|
能力值:
( 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] //这里漏出了真实的注册码!
不知道楼上的各位老大跟出这个注册码是不是因为这里的问题!!!
还有没有别的地方需要改进的哦`~~
|
能力值:
( 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
|
能力值:
( LV5,RANK:60 )
|
-
-
17 楼
嘿嘿,楼上几位大牛都分析完了. 自已写个KEYGEN,问题多多, PS: 忙中出错,刚刚回到你的第一个CM里了........
|
能力值:
( 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
|
能力值:
( LV12,RANK:210 )
|
-
-
21 楼
真的很佩服你的耐心!
其实老实说,这个算法是我分析一个名字叫"运指如飞"的程序的注册算法的一部分!
我只是把算出来的东西,用RSA进行了加密!
我还没有写过RSA算法的注册机,看了你的程序,我也受益了!
谢谢你能耐心的分析我的程序!
也谢谢的分享!
我会好好学习反调试等方面的东西!然后继续更新我的CRACK ME!
我相信:我会写出更好的程序让大家一起进步的!
也祝你能成功!
谢谢~~
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
第三个循环结束后堆栈里有注册码……
242245872125 xixuer 525511-279542-543552
|