coolpeople 发表于 2007-8-2 19:20:56

为庆祝论坛恢复(写一个Crakeme)VC&MFC版

有能力的写个keygen吧。。爆破没啥意思。。/:013 最少出一组码吧:loveliness:

[ 本帖最后由 coolpeople 于 2007-8-2 19:23 编辑 ]

pluck 发表于 2007-8-3 09:14:44

呵呵暴破成功回头看一看算法简单看了一下不是很难的。

大菜一号 发表于 2007-8-3 10:06:28

cm有bug/:012 ?

00401490   .56            push    esi
00401491   .8BF1          mov   esi, ecx
00401493   .57            push    edi
00401494   .8D7E 6C       lea   edi, dword ptr
00401497   .57            push    edi
00401498   .68 E9030000   push    3E9
0040149D   .E8 9A080200   call    <jmp.&MFC42.#3092_CWnd::GetDlgIt><-取注册名
004014A2   .8BC8          mov   ecx, eax
004014A4   .E8 8D080200   call    <jmp.&MFC42.#3874_CWnd::GetWindo><-注册码
004014A9   .8B07          mov   eax, dword ptr
004014AB   .50            push    eax                              ; /s
004014AC   .FF15 EC324200 call    dword ptr [<&MSVCRT.atoi>]       ; \atoi<-注册码转换为数组
004014B2   .8B4E 64       mov   ecx, dword ptr <-注册码
004014B5   .83C4 04       add   esp, 4
004014B8   .3BC8          cmp   ecx, eax<-比较
004014BA   .75 30         jnz   short 004014EC<-不等就出错
004014BC   .8B46 70       mov   eax, dword ptr
004014BF   .8B40 F8       mov   eax, dword ptr
004014C2   .85C0          test    eax, eax
004014C4   .74 26         je      short 004014EC
004014C6   .8B0F          mov   ecx, dword ptr
004014C8   .8B51 F8       mov   edx, dword ptr
004014CB   .85D2          test    edx, edx
004014CD   .74 1D         je      short 004014EC
004014CF   .83F8 02       cmp   eax, 2<-注册名长度和2比较
004014D2   .7E 18         jle   short 004014EC<-小于等于就出错
004014D4   .83F8 05       cmp   eax, 5<-注册名长度和5比较
004014D7   .7D 13         jge   short 004014EC<-大于等于就出错

注册名长度在2-5之间,
不知道是不是我看错,每次运行的注册码都会不一样!/:002 /:002

大菜一号 发表于 2007-8-3 10:07:23

而且得到的注册码如果不是数值的话,atoi也会返回0,这个cm有问题哦/:010

大菜一号 发表于 2007-8-3 10:09:05

还是贴一组,不过我只能在运行的某一次注册成功,
还是成功了,哈哈哈哈!

laccer 发表于 2007-8-3 13:45:47

大菜也这么喜欢玩CM/:017 ,贴个算法过程让我们小菜学习一下。

coolpeople 发表于 2007-8-3 15:44:17

原帖由 大菜一号 于 2007-8-3 10:09 发表
还是贴一组,不过我只能在运行的某一次注册成功,
还是成功了,哈哈哈哈!
不知道你是运行几次出来的码/:018 反正不是第一次运行码。。。/:013

PS:看看能改下程序。。让他每次出现唯一的码不。。想ING。

[ 本帖最后由 coolpeople 于 2007-8-3 15:46 编辑 ]

大菜一号 发表于 2007-8-3 16:13:58

当然可以``哈哈哈,那就有固定注册码了``/:014

Gue 发表于 2007-8-3 19:08:04

算法.


00401466   . /7E 1D            jle   short 00401485
00401468   > |0FBE040A         movsx   eax, byte ptr
0040146C   . |8946 68            mov   dword ptr , eax
0040146F   . |8D78 FF            lea   edi, dword ptr
00401472   . |0FAFF8             imul    edi, eax
00401475   . |8B46 64            mov   eax, dword ptr
00401478   . |03C7               add   eax, edi
0040147A   . |41               inc   ecx
0040147B   . |8946 64            mov   dword ptr , eax
0040147E   . |8B42 F8            mov   eax, dword ptr
00401481   . |3BC8               cmp   ecx, eax
00401483   .^|7C E3            jl      short 00401468


注册机:

#用户名,3-4个字符,用户名不要用手输入,直接复制粘贴.
UserName = r'Gue'

Serial = 0

for i in range(len(UserName)):
        temp = ord(UserName)
        Serial += (temp * (temp - 1))

print "%s \'s serial : %d" % (UserName, Serial)


不知道是CM的问题还是作者有意这么做的..用手输入得到的注册码和复制粘贴得到的注册码是不一样的..有兴趣的可以自己写吧.我就写个简单的..

CM工作原理:

用户输入用户名时开始累计用户的和,只要是输入过的字符都会累计在内..

所以,就像你最终的用户名是输对了.但你用backspace键修改过,最终的注册码是不一样了..

明码比较..

提供一组注册码:
用户名:Gue
注册码:28642

同样,用户名请复制后直接粘贴到CM里.如果操作错了.请关掉CM重新运行.

[ 本帖最后由 Gue 于 2007-8-5 19:49 编辑 ]

coolpeople 发表于 2007-8-3 23:29:43

复制的简单。。。/:017
页: [1] 2
查看完整版本: 为庆祝论坛恢复(写一个Crakeme)VC&MFC版