能力值:
( 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
|
能力值:
( LV9,RANK:290 )
|
-
-
27 楼
fonge 兄弟也在啊!
happytown兄弟工作怎么样 了?
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
俺给是给破了,但是不会写注册机... 郁闷..还有我觉得对这个爆破很简单..见笑了.
呵呵..
|
能力值:
( 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..
........
请问这个表是怎么看到的 我怎么就找不到这样的地方呢 初学破解 还请赐教之
|
能力值:
( 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 ........
呵呵 这程序爆破简单 算法分析起来蛮费劲的 我顶你
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
这个过程大概是这样的,取NAME ,经过好几次不同的异或存储(我水平还是很菜,只能知道个大概,具体算法对我来就很难了。),再与CODE比较。
可以这样,将:
004012DB 68 E7624000 push 004062E7
这里改成 push 00406549
保存到文件后,注册提示窗口就成注册机了。
我是新手只有这水平希望高手不要见笑
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
name
3569221743
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
tswh
3568507517
什么都不会,弄了半天就弄出了注册码
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
太感谢楼主了,真是太好了!
|
能力值:
(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 .苎..... ........
在跟踪算法的过程中,随时注意参与计算的内存数据就可以了。
|
能力值:
(RANK:210 )
|
-
-
36 楼
最初由 zhudixu 发布 这个过程大概是这样的,取NAME ,经过好几次不同的异或存储(我水平还是很菜,只能知道个大概,具体算法对我来就很难了。),再与CODE比较。
可以这样,将: 004012DB 68 E7624000 push 004062E7 这里改成 push 00406549 ........
这个办法好!
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
下来用这个试试。
|
能力值:
( LV12,RANK:410 )
|
-
-
39 楼
楼上的是小辉?
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
谢楼主 分享啊 试下呢
|
能力值:
(RANK:10 )
|
-
-
41 楼
在004012BA处下断,就看到明码了~~
算法就不懂了.学习中
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
name:1111
code:3572128831
哈哈,这是我能破的为数不多的一个了,感谢楼主!
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
username:huang
reg.code:2504476398
终于找到了一丝感觉了,:-)
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
我先试试.能搞定不.
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
name:123456
pass:894904543
得不能算法.初学.没办法啊!
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
|
能力值:
( LV3,RANK:30 )
|
-
-
47 楼
username:snake
password:2537703129
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
下来试试~~~~~~
|
能力值:
( 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调用而得到的上一个压码的长度。
可以看出,正确的注册码是上一次压码的反序输出。
|
|
|