robey 发表于 2010-7-2 10:38

新手练手用的CM

自已学Delphi写的一个CM,爆破很简单。

要求:解释此程序的算法,写出注册机.

小糊涂虫 发表于 2010-7-2 11:55

算法简单。。。
两组可用的的
12345
50855160
lcg
40369560
不会编程,不会注册机。
关键部分:
00451524               B8 01000000      mov eax,1
00451529               8B4D FC          mov ecx,dword ptr ss:
0045152C               0FB64C01 FF      movzx ecx,byte ptr ds:
00451531               0FAFC8         imul ecx,eax
00451534               03D9             add ebx,ecx
00451536               40               inc eax
00451537               4A               dec edx
00451538             ^ 75 EF            jnz short CMNO1.00451529
0045153A               8BC3             mov eax,ebx
0045153C               C1E0 10          shl eax,10
0045153F               2BC3             sub eax,ebx
00451541               8BD8             mov ebx,eax
00451543               8BC3             mov eax,ebx
00451545               33D2             xor edx,edx
00451547               52               push edx
00451548               50               push eax

太虚伪了 发表于 2010-7-2 12:21

帮ls的大侠补充下:
00451524|.B8 01000000      mov   eax, 1
00451529|>8B4D FC          /mov   ecx, dword ptr
0045152C|.0FB64C01 FF      |movzx   ecx, byte ptr        ;取name的ASCII码
00451531|.0FAFC8         |imul    ecx, eax                        ;乘以循环次数
00451534|.03D9             |add   ebx, ecx                        ;ebx=sum,sum初始为1
00451536|.40               |inc   eax
00451537|.4A               |dec   edx
00451538|.^ 75 EF            \jnz   short 00451529
0045153A|>8BC3             mov   eax, ebx
0045153C|.C1E0 10          shl   eax, 10                        ;循环的sum乘以2的十次方
0045153F|.2BC3             sub   eax, ebx                         ;再减去初始的循环结果,转换为十进制就是最终的注册码

xiaocainiaok 发表于 2010-7-2 12:40

关注此贴下载玩下...

xiaocainiaok 发表于 2010-7-2 13:25

本帖最后由 xiaocainiaok 于 2010-7-2 13:56 编辑

00407BEE |> \DF28 fild qword ptr ; 1
00407BF0 |> DF0424 fild word ptr
00407BF3 |. D9C1 fld st(1)
00407BF5 |> 4E /dec esi
00407BF6 |. D9F8 |fprem
00407BF8 |. DF1C24 |fistp word ptr
00407BFB |. DCF9 |fdiv st(1), st
00407BFD |. 8A0424 |mov al, byte ptr
00407C00 |. 04 30 |add al, 30
00407C02 |. 3C 3A |cmp al, 3A
00407C04 |. 72 02 |jb short 00407C08
00407C06 |. 04 07 |add al, 7
00407C08 |> 8806 |mov byte ptr , al
00407C0A |. D9C1 |fld st(1)
00407C0C |. D8D3 |fcom st(3)
00407C0E |. 9B |wait
00407C0F |. DFE0 |fstsw ax
00407C11 |. 9E |sahf
00407C12 |.^ 73 E1 \jnb short 00407BF5
00407C14 |. D96C24 02 fldcw word ptr
00407C18 |. 83C4 04 add esp, 4
00407C1B |. DDC3 ffree st(3)
00407C1D |. DDC2 ffree st(2)
00407C1F |. DDC1 ffree st(1)
00407C21 |. DDC0 ffree st
00407C23 |. 59 pop ecx
00407C24 |. 29F1 sub ecx, esi
00407C26 |. 29CA sub edx, ecx
00407C28 |. 76 10 jbe short 00407C3A
00407C2A |. 29D6 sub esi, edx
00407C2C |. B0 30 mov al, 30
00407C2E |. 01D1 add ecx, edx
00407C30 |. EB 03 jmp short 00407C35
00407C32 |> 880432 /mov byte ptr , al
00407C35 |> 4A dec edx
00407C36 |.^ 75 FA \jnz short 00407C32
00407C38 |. 8806 mov byte ptr , al


这段代码看着头疼...竟然只是16进制转10进制分析了一个小时发现楼上已经贴出正确答案了.... 例如1234    取“1”的asc值31累加1+31+2*32+3*33+4*44=1ff   lsh10位 =1ff0000   减去1ff=1FEFE01   转为十进制33488385验证下   竟然ok了

robey 发表于 2010-7-2 14:43

分析的都是正确的。哪位能贴一下注册机源码。

稍候我再放出CM的源码。。。。

robey 发表于 2010-7-2 14:46

回复 3# 太虚伪了


    0045153C|.C1E0 10          shl   eax, 10                        ;循环的sum乘以2的十次方
这个指令是不是可以理解为 左移多少位就表示乘以2的多少次方。

我的时光 发表于 2010-7-2 14:50

膜拜继续关注 希望有贴注册机源码的 继续学习

oo789458 发表于 2010-7-2 14:57

牛人多多 厉害

小糊涂虫 发表于 2010-7-2 14:59

回复太虚伪了


    0045153C|.C1E0 10          shl   eax, 10                        ;   ...
robey 发表于 2010-7-2 14:46 http://bbs.52pojie.cn/images/common/back.gif


    我认为是这样的。。。
页: [1] 2
查看完整版本: 新手练手用的CM