首页
社区
课程
招聘
我的第一个CrackMe(适合新手)
发表于: 2006-9-20 16:58 15422

我的第一个CrackMe(适合新手)

bxm 活跃值
29
2006-9-20 16:58
15422

难度:初级
   语言:VC++ 6.0
   无壳.核心代码就几行,要求写出注册机.
   不太会编程,界面也不太漂亮.


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (30)
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
2
呵呵,8错8错。
2006-9-20 18:47
0
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
3
谢谢版主鼓励!
2006-9-21 10:14
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
可惜,本想还你一个答案,但
上传的附件:
  • 1.jpg (10.75kb,527次下载)
2006-9-21 10:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我新手来练练下 谢谢LZ
2006-9-21 10:40
0
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
6
最初由 KAN 发布
可惜,本想还你一个答案,但

  从网上下载个MFC42D.dll应该可以运行.
2006-9-21 10:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个破解得算法原来大概已经跟出来 但是在写注册机的时候发现问题

1.用户名每一位取出来的asc码相加  假设结果为x
  则通过用户计算出的最终结果为  -x * ( x + 用户名长度 )

2.注册码算法是
  假设注册码为1234  一开始反序 变成 4321 假设这个值为 y
  然后取 y的补  然后 求平方  并且乘以 用户名长度
  y = (-y) * ( -y)
  即 y * 用户名长度 假设 为z

最后 如果 x + y + z = 0 则表示成功
2006-9-22 17:58
0
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
8
最初由 qkaibo 发布
这个破解得算法原来大概已经跟出来 但是在写注册机的时候发现问题

1.用户名每一位取出来的asc码相加 假设结果为x
则通过用户计算出的最终结果为 -x * ( x + 用户名长度 )

........

有没有可用的用户名与注册码?
2006-9-25 09:13
0
雪    币: 380
活跃值: (101)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
9
bxm不好意思,借花献佛,用你的第一个CRACKME开刀了,过程见
http://bbs1.pediy.com:8081/showthread.php?s=&threadid=32701
还望指点
2006-10-1 08:29
0
雪    币: 174
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
需要MFC运行库 我没有 超级郁闷
2006-10-1 22:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不懂啊。。完全看不懂。。新手。嘿嘿。。
2006-10-5 16:45
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nop
12
刚学逆向,这个CrackMe就花了n小时,呵呵.
写了个注册机 c代码

最终只要
(ss+ns)(ss-ns-nl)=0 即可
所以有两种注册码:
ss = -ns ;
ss = ns + nl;
其中,ns是注册名各位的ascii码和,nl是注册名长度

------------------------------------
#include <stdio.h>
void keygen(char* name);

void main(int argc, char* argv[])
{
    if(argc == 2)
    {
	keygen(argv[1]);
    }
    else
    {
	printf("Usage:\r\n\t%s <name>\r\n", argv[0]);
    }
}

void keygen(char* name)
{
    int i=0, namesum=0, namelen=strlen(name);

    for(i; i<namelen; i++)
    {
	namesum = name[i]+namesum;	
    }
    
    printf("Name:\t%s\r\n", name);
    printf("Serial[1]:\t%u\r\n", -namesum);
    printf("Serial[2]:\t%u\r\n", namesum+namelen);
}
2006-10-14 14:17
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
楼主以后把所需的文件一块放h吧,在网上找了半天好不容易找到了MFC42D.DLL,迅雷又出了毛病没法用,我足足下了十分钟;可。。。还是不能用:
“无法定位序数 5077 于动态链接库MFC42D.DLL上”

                                                 郁闷。。。。
2006-11-9 15:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我菜菜鸟只会爆破,看不懂算法耶,郁闷,看来要复习一下汇编了
2006-11-16 23:12
0
雪    币: 136
活跃值: (1475)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
15
不错不错适合新手
2010-4-4 21:00
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
16
数学cm,算法分析得头疼
bitt
4294966861
2010-4-8 11:45
0
雪    币: 302
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
004023C0  /> \55            push ebp
004023C1  |.  8BEC          mov ebp,esp
004023C3  |.  81EC 90000000 sub esp,0x90
004023C9  |.  53            push ebx
004023CA  |.  56            push esi
004023CB  |.  57            push edi
004023CC  |.  51            push ecx
004023CD  |.  8DBD 70FFFFFF lea edi,[local.36]
004023D3  |.  B9 24000000   mov ecx,0x24
004023D8  |.  B8 CCCCCCCC   mov eax,0xCCCCCCCC
004023DD  |.  F3:AB         rep stos dword ptr es:[edi]
004023DF  |.  59            pop ecx
004023E0  |.  894D FC       mov [local.1],ecx
004023E3  |.  6A 01         push 0x1
004023E5  |.  8B4D FC       mov ecx,[local.1]
004023E8  |.  E8 7DEDFFFF   call <jmp.&MFC42D.#5056>
004023ED  |.  C745 F8 00000>mov [local.2],0x0
004023F4  |.  C745 F0 00000>mov [local.4],0x0
004023FB  |.  8B4D FC       mov ecx,[local.1]
004023FE  |.  83C1 60       add ecx,0x60
00402401  |.  E8 8EFBFFFF   call <jmp.&MFC42D.#880>                  ;  得到用户名
00402406  |.  50            push eax                                 ; /src
00402407  |.  8D45 D0       lea eax,[local.12]                       ; |
0040240A  |.  50            push eax                                 ; |dest
0040240B  |.  E8 24EDFFFF   call <jmp.&MSVCRTD.strcpy>               ; \strcpy
00402410  |.  83C4 08       add esp,0x8                              ;  并把用户名放到局部变量local.12中
00402413  |.  8D4D D0       lea ecx,[local.12]
00402416  |.  51            push ecx                                 ; /s
00402417  |.  E8 1EEDFFFF   call <jmp.&MSVCRTD.strlen>               ; \strlen
0040241C  |.  83C4 04       add esp,0x4                              ;  得到用户名长度
0040241F  |.  8945 E8       mov [local.6],eax                        ;  把用户名长度放在local.6变量中
00402422  |.  C745 EC 00000>mov [local.5],0x0
00402429  |.  EB 09         jmp short Bxm_Crac.00402434
0040242B  |>  8B55 EC       /mov edx,[local.5]                       ;  求用户名的ASCII和,并将结果放在local.2中
0040242E  |.  83C2 01       |add edx,0x1
00402431  |.  8955 EC       |mov [local.5],edx
00402434  |>  8B45 EC        mov eax,[local.5]
00402437  |.  3B45 E8       |cmp eax,[local.6]                       ;  0与用户名长度比较
0040243A  |.  7D 12         |jge short Bxm_Crac.0040244E
0040243C  |.  8B4D EC       |mov ecx,[local.5]
0040243F  |.  0FBE540D D0   |movsx edx,byte ptr ss:[ebp+ecx-0x30]
00402444  |.  8B45 F8       |mov eax,[local.2]
00402447  |.  03C2          |add eax,edx
00402449  |.  8945 F8       |mov [local.2],eax
0040244C  |.^ EB DD         \jmp short Bxm_Crac.0040242B
0040244E  |>  8B4D F8       mov ecx,[local.2]
00402451  |.  F7D9          neg ecx                                  ;  将用户名ASCII码和进行neg运算,结果放在ecx中
00402453  |.  8B55 F8       mov edx,[local.2]
00402456  |.  0355 E8       add edx,[local.6]                        ;  名ASCII和+用户名长度,结果放在edx中
00402459  |.  0FAFCA        imul ecx,edx
0040245C  |.  894D F4       mov [local.3],ecx                        ;  将上述两者的积放入local.3中
0040245F  |.  8B4D FC       mov ecx,[local.1]
00402462  |.  83C1 64       add ecx,0x64
00402465  |.  E8 2AFBFFFF   call <jmp.&MFC42D.#880>
0040246A  |.  50            push eax                                 ; /src
0040246B  |.  8D45 B8       lea eax,[local.18]                       ; |
0040246E  |.  50            push eax                                 ; |dest
0040246F  |.  E8 C0ECFFFF   call <jmp.&MSVCRTD.strcpy>               ; \strcpy
00402474  |.  83C4 08       add esp,0x8                              ;  把注册码拷到local.18变量中
00402477  |.  C745 B0 01000>mov [local.20],0x1
0040247E  |.  8D4D B8       lea ecx,[local.18]
00402481  |.  51            push ecx                                 ; /s
00402482  |.  E8 B3ECFFFF   call <jmp.&MSVCRTD.strlen>               ; \strlen
00402487  |.  83C4 04       add esp,0x4                              ;  求出code的长度
0040248A  |.  83E8 01       sub eax,0x1
0040248D  |.  8945 B4       mov [local.19],eax                       ;  code的长度-1放到local.19变量中
00402490  |.  EB 09         jmp short Bxm_Crac.0040249B              ;  下面的循环取出注册码的16进制值,结果放local.4变量中
00402492  |>  8B55 B4       /mov edx,[local.19]
00402495  |.  83EA 01       |sub edx,0x1
00402498  |.  8955 B4       |mov [local.19],edx
0040249B  |>  837D B4 00     cmp [local.19],0x0
0040249F  |.  7C 22         |jl short Bxm_Crac.004024C3
004024A1  |.  8B45 B4       |mov eax,[local.19]
004024A4  |.  0FBE4C05 B8   |movsx ecx,byte ptr ss:[ebp+eax-0x48]
004024A9  |.  83E9 30       |sub ecx,0x30
004024AC  |.  0FAF4D B0     |imul ecx,[local.20]
004024B0  |.  8B55 F0       |mov edx,[local.4]
004024B3  |.  03D1          |add edx,ecx
004024B5  |.  8955 F0       |mov [local.4],edx
004024B8  |.  8B45 B0       |mov eax,[local.20]
004024BB  |.  6BC0 0A       |imul eax,eax,0xA
004024BE  |.  8945 B0       |mov [local.20],eax
004024C1  |.^ EB CF         \jmp short Bxm_Crac.00402492
004024C3  |>  8B4D F0       mov ecx,[local.4]
004024C6  |.  6BC9 FF       imul ecx,ecx,-0x1                        ;  将上述结果乘以-0x1
004024C9  |.  894D F0       mov [local.4],ecx                        ;  把结果放回local.4变量
004024CC  |.  837D E8 00    cmp [local.6],0x0                        ;  用户名长度不为0
004024D0  |.  74 2F         je short Bxm_Crac.00402501               ;  不能跳
004024D2  |.  8B55 F0       mov edx,[local.4]
004024D5  |.  0FAF55 F0     imul edx,[local.4]                       ;  将上述结果平方
004024D9  |.  8B45 F0       mov eax,[local.4]                        ;  local.4是第一阶段的结果..在上面
004024DC  |.  0FAF45 E8     imul eax,[local.6]                       ;  乘以用户名长度
004024E0  |.  8B4D F4       mov ecx,[local.3]                        ;  第一阶段的结果,在上面
004024E3  |.  03CA          add ecx,edx
004024E5  |.  03C1          add eax,ecx
004024E7  |.  85C0          test eax,eax
004024E9  |.  75 16         jnz short Bxm_Crac.00402501              ;  不能跳
004024EB  |.  6A 00         push 0x0
004024ED  |.  68 20514100   push Bxm_Crac.00415120
004024F2  |.  68 14514100   push Bxm_Crac.00415114
004024F7  |.  8B4D FC       mov ecx,[local.1]
004024FA  |.  E8 71ECFFFF   call <jmp.&MFC42D.#3517>
004024FF  |.  EB 14         jmp short Bxm_Crac.00402515
00402501  |>  6A 00         push 0x0
00402503  |.  68 08514100   push Bxm_Crac.00415108
00402508  |.  68 58504100   push Bxm_Crac.00415058
0040250D  |.  8B4D FC       mov ecx,[local.1]
00402510  |.  E8 5BECFFFF   call <jmp.&MFC42D.#3517>                 ;  失败
00402515  |>  6A 00         push 0x0
00402517  |.  8B4D FC       mov ecx,[local.1]
0040251A  |.  E8 4BECFFFF   call <jmp.&MFC42D.#5056>
0040251F  |.  5F            pop edi

注释:A= (neg 用户名ASCII和)*(用户名ASCII和 + 用户名长度);
B= (注册码ASCII和 * (-0x1)) +A
result = B+(注册码ASCII和*(-0x1)) * 用户名长度
如果result==0,就成功
否则,注册失败....
2010-8-3 18:42
0
雪    币: 261
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
呵呵....下来试试
2010-8-4 03:03
0
雪    币: 170
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
呵呵..学习了..
2010-8-4 10:18
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
爆破了,研究算法中,准备注册机
2010-8-5 21:56
0
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
晕倒了,这个怎么进行逆运算算出注册码啊???
2010-8-6 09:35
0
雪    币: 555
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
无聊写了个注册机,测试基本通过
上传的附件:
2010-8-25 02:39
0
雪    币: 52
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
没有安装C++的组件 运行不了DLL....
2010-8-25 23:39
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
先下载爆破一下,谢谢楼主
2010-8-26 12:52
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
算法好像很简单啊,
是用户名各字符的ascii码相加的结果再加上用户名长度就行了。
2010-8-27 10:54
0
游客
登录 | 注册 方可回帖
返回
//