首页
社区
课程
招聘
[推荐]一个适合初学者的crackme
发表于: 2007-1-13 13:02 41429

[推荐]一个适合初学者的crackme

2007-1-13 13:02
41429
收藏
免费 7
支持
分享
最新回复 (59)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
最初由 china 发布
00406328 AA 89 C4 FE 46 78 F0 D0 ?宁Fx鹦
00406330 03 E7 F7 FD F4 E7 B9 B5 琪?绻
00406338 1B C9 50 73 00 70 45 14 尚s.pE
00406340 00 DC 51 00 00 00 00 00 .苎.....
00406348 00 63 68 69 6E 61 00 00 .china..
........

佩服高人的毅力,我是第一次真正意义的跟踪算法,跟了1个小时也就跟踪到第三步就受不了啦?开始天旋地转了.看了大家说是明码就一直F8,直到看到有注册码摸样的内容出现才停止。终于搞定!于是我就想如果不是明码,还使用不可逆的同时又是long.long.....long的算法,那我们该怎么应对???
gyxzzza
807024059
2007-3-1 10:38
0
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
27
fonge 兄弟也在啊!
happytown兄弟工作怎么样 了?
2007-3-2 00:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
俺给是给破了,但是不会写注册机...  郁闷..还有我觉得对这个爆破很简单..见笑了.

呵呵..
2007-3-2 15:50
0
雪    币: 214
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
29
引用: 最初由 china 发布
00406328  AA 89 C4 FE 46 78 F0 D0  ?宁Fx鹦
00406330  03 E7 F7 FD F4 E7 B9 B5  琪?绻
00406338  1B C9 50 73 00 70 45 14  尚s.pE
00406340  00 DC 51 00 00 00 00 00  .苎.....
00406348  00 63 68 69 6E 61 00 00  .china..
........
请问这个表是怎么看到的 我怎么就找不到这样的地方呢 初学破解 还请赐教之
2007-3-4 19:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
最初由 hz1812 发布
算法是这样的:
先把用户名的第一位去掉,再在用户名最后加一个ASCII码为0的字符组成新的字符串s1然后再进入下面的四步运算.
第一步,ASCII码AA,89,C4,FE,46加到新字符串s1头部组成字符串s2,S1与S2各位异或得s3
第二步,S3尾部加E7,03,D0,F0,78组成S4,S4与S3各位异或得S5
第三步,F7,FD,F4,E7,B9加到S5头部得S6,S6与S5各位异或得S7
........


呵呵 这程序爆破简单 算法分析起来蛮费劲的 我顶你
2007-3-4 21:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
这个过程大概是这样的,取NAME ,经过好几次不同的异或存储(我水平还是很菜,只能知道个大概,具体算法对我来就很难了。),再与CODE比较。

可以这样,将:
004012DB      68 E7624000   push  004062E7
这里改成      push    00406549

保存到文件后,注册提示窗口就成注册机了。
我是新手只有这水平希望高手不要见笑
2007-3-4 23:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
name
3569221743
2007-3-8 11:49
0
雪    币: 181
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
tswh
3568507517

什么都不会,弄了半天就弄出了注册码
2007-3-9 21:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
太感谢楼主了,真是太好了!
2007-3-10 01:41
0
雪    币: 3688
活跃值: (4242)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
35
最初由 talaqi 发布
引用: 最初由 china 发布
00406328 AA 89 C4 FE 46 78 F0 D0 ?宁Fx鹦
00406330 03 E7 F7 FD F4 E7 B9 B5 琪?绻
00406338 1B C9 50 73 00 70 45 14 尚s.pE
00406340 00 DC 51 00 00 00 00 00 .苎.....
........


在跟踪算法的过程中,随时注意参与计算的内存数据就可以了。
2007-3-10 01:47
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
36
最初由 zhudixu 发布
这个过程大概是这样的,取NAME ,经过好几次不同的异或存储(我水平还是很菜,只能知道个大概,具体算法对我来就很难了。),再与CODE比较。

可以这样,将:
004012DB 68 E7624000 push 004062E7
这里改成 push 00406549
........


这个办法好!
2007-3-10 12:43
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
37
晕,明码。。。
0040126A   .^\75 EE         jnz     short 0040125A
0040126C   .  68 49654000   push    00406549                         ; /String = "4281210177"
00401271   .  E8 86010000   call    <jmp.&kernel32.lstrlenA>         ; \lstrlenA
00401276   .  33DB          xor     ebx, ebx
00401278   >  8A88 48654000 mov     cl, [eax+406548]
0040127E   .  888B 49674000 mov     [ebx+406749], cl
00401284   .  43            inc     ebx
00401285   .  48            dec     eax
00401286   .^ 75 F0         jnz     short 00401278
00401288   .  68 49674000   push    00406749                         ; /String2 = "4281210177"
0040128D   .  68 49654000   push    00406549                         ; |String1 = crackme.00406549
00401292   .  E8 5F010000   call    <jmp.&kernel32.lstrcpyA>         ; \lstrcpyA
00401297   .  68 00020000   push    200                              ; /Count = 200 (512.)
0040129C   .  68 49694000   push    00406949                         ; |Buffer = crackme.00406949
004012A1   .  6A 64         push    64                               ; |ControlID = 64 (100.)
004012A3   .  FF75 08       push    dword ptr [ebp+8]                ; |hWnd
004012A6   .  E8 E5000000   call    <jmp.&user32.GetDlgItemTextA>    ; \GetDlgItemTextA
004012AB   .  68 49654000   push    00406549                         ; /String2 = "4281210177"
004012B0   .  68 49694000   push    00406949                         ; |String1 = "4281210177"
004012B5   .  E8 36010000   call    <jmp.&kernel32.lstrcmpA>         ; \lstrcmpA
004012BA   .  0BC0          or      eax, eax

xiaohui_82
4281210177
2007-3-10 13:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
下来用这个试试。
2007-3-10 14:22
0
雪    币: 372
活跃值: (31)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
39
楼上的是小辉?
2007-3-10 14:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
谢楼主  分享啊  试下呢
2007-3-12 11:25
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
41
在004012BA处下断,就看到明码了~~
算法就不懂了.学习中
2007-3-12 16:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
name:1111
code:3572128831

哈哈,这是我能破的为数不多的一个了,感谢楼主!
2007-3-17 20:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
username:huang
reg.code:2504476398
终于找到了一丝感觉了,:-)
2007-3-18 10:37
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
我先试试.能搞定不.
2007-3-19 02:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
name:123456
pass:894904543
得不能算法.初学.没办法啊!
2007-4-5 21:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46


。。。
2007-4-13 14:08
0
雪    币: 247
活跃值: (42)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
47
username:snake
password:2537703129
2007-5-2 11:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
2007-5-2 15:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
下来试试~~~~~~
2007-5-4 15:57
0
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
衷心感谢happytown前辈,
  您的Crackme让我这个初学者找回了自信~~

Fnems:2168734425

汗……只有最后一段看懂了。

0040124E   .  B9 0A000000   mov     ecx, 0A
        ecx做除数,得到下面大数字按十进制数对应的ascii码

00401253   .  A1 45634000   mov     eax, dword ptr [406345]
        分析下面代码知,这个dword ptr [406345]
        十进制数字对应的字符串的反序就是注册码。

00401258   .  33DB          xor     ebx, ebx                        ebx清空后作计数器用。下面每一次压码,ebx加一。

        此处开始,压入初步的码串
0040125A   >  33D2          xor     edx, edx                        edx清空
0040125C   .  F7F1          div     ecx                                做除法?每次除的都是10,
                                                                余数到ebx。这样ebx保证都是数字
0040125E   .  80C2 30       add     dl, 30                        加上0x30后保证是字符。该字符是余数的ascii
00401261   .  8893 49654000 mov     byte ptr [ebx+406549], dl        压栈。
00401267   .  43            inc     ebx
00401268   .  85C0          test    eax, eax
0040126A   .^ 75 EE         jnz     short 0040125A
        不停的压入,直到eax=0。
        实际上,压入的码正好是eax的十进制数对应的字符串
        (分析后面的指令可以知道,此时压入的是反序的正确注册码)

0040126C   .  68 49654000   push    00406549                         ; /String = ""
00401271   .  E8 86010000   call    <jmp.&kernel32.lstrlenA>         ; \lstrlenA
        调用后eax保存了上一步压码的长度,在下一步中得到使用

00401276   .  33DB          xor     ebx, ebx

        真正的获得正确注册码的部分。
00401278   >  8A88 48654000 mov     cl, byte ptr [eax+406548]
0040127E   .  888B 49674000 mov     byte ptr [ebx+406749], cl
00401284   .  43            inc     ebx
00401285   .  48            dec     eax
00401286   .^ 75 F0         jnz     short 00401278
        eax是&kernel32.lstrlenA调用而得到的上一个压码的长度。
        可以看出,正确的注册码是上一次压码的反序输出。
2007-5-6 19:24
0
游客
登录 | 注册 方可回帖
返回
//