能力值:
( LV2,RANK:10 )
|
-
-
2 楼
看一看
看一看
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
1: 9527888
2: <BrD-SoB>
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我贴不上图,搞定
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
什么题??难道是玩人的?
004016DB 33C0 xor eax, eax
004016DD EB 05 jmp short 004016E4
004016DF 1BC0 sbb eax, eax ; 不等于hanyu 则跳转到这里
004016E1 83D8 FF sbb eax, -1
004016E4 83F8 01 cmp eax, 1 ;
004016E7 /75 50 jnz short 00401739 ; eax不等于1则跳转
靠 eax or eax 后 eax等于0 然后和1比 不等则跳 0 能得1 么?你这不是玩人么你
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
LZ, 我爱你
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
你在“hanyu”后+个字符看看吧。
|
能力值:
( LV9,RANK:180 )
|
-
-
8 楼
对于不了解的东西, 话就不要说得太满
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不好意思了 这个CRACK弄了好久才看到这一步 可是怎么也过不去了 很闹心以为是有人故意在论坛里玩人 在这里像版主道歉!
|
能力值:
( LV11,RANK:180 )
|
-
-
10 楼
弄了一下,呵呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
就是在和hanyu比较 后面是跟9527888比较 但hanyu过不去怎么跟9527888比较?请指点下
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
有东西要学了
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
过关了吧
第一个
kMe($A)...
9527888
第二个
<BrD-SoB>
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
哥哥,给个教程好不
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
呵呵,运气很好。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
爆破了....
3个跳转全部过了
什么都没要
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
004016AC 8B87 E4000000 mov eax, dword ptr [edi+E4]
004016B2 BE 4C304000 mov esi, 0040304C ; ASCII "hanyu"
004016B7 8A10 mov dl, byte ptr [eax] ; 看第一个字节是否相等,不相等则错误
004016B9 8A1E mov bl, byte ptr [esi]
004016BB 8ACA mov cl, dl ; dl放到了cl里
004016BD 3AD3 cmp dl, bl
004016BF 75 1E jnz short 004016DF
004016C1 84C9 test cl, cl ; 检查cl是否为空,为空表明ESI中的字符串已经结束
004016C3 74 16 je short 004016DB
004016C5 8A50 01 mov dl, byte ptr [eax+1] ; 比较第二个字符是否相等
004016C8 8A5E 01 mov bl, byte ptr [esi+1]
004016CB 8ACA mov cl, dl
004016CD 3AD3 cmp dl, bl
004016CF 75 0E jnz short 004016DF
004016D1 83C0 02 add eax, 2 ; 字符串索引加2
004016D4 83C6 02 add esi, 2
004016D7 84C9 test cl, cl
004016D9 ^ 75 DC jnz short 004016B7 ; 如果字符串没有结束,回到16B7继续循环
004016DB 33C0 xor eax, eax
004016DD EB 05 jmp short 004016E4
004016DF 1BC0 sbb eax, eax ; 这个地方注意, 下面的jnz short 00401739会带到直接出错误对话框的地方,所以这两句必须让eax 为1, 和上面的比较结合,就知道用户名应该是hanyu加上任意一个字符.
004016E1 83D8 FF sbb eax, -1
004016E4 83F8 01 cmp eax, 1
004016E7 75 50 jnz short 00401739
004016E9 8B87 E8000000 mov eax, dword ptr [edi+E8]
004016EF BE 44304000 mov esi, 00403044 ; ASCII "9527888"
004016F4 8A10 mov dl, byte ptr [eax] ; 看起来密码的验证算法和用户名验证算法类似
004016F6 8A1E mov bl, byte ptr [esi]
004016F8 8ACA mov cl, dl
004016FA 3AD3 cmp dl, bl
004016FC 75 1E jnz short 0040171C
004016FE 84C9 test cl, cl
00401700 74 16 je short 00401718
00401702 8A50 01 mov dl, byte ptr [eax+1]
00401705 8A5E 01 mov bl, byte ptr [esi+1]
00401708 8ACA mov cl, dl
0040170A 3AD3 cmp dl, bl
0040170C 75 0E jnz short 0040171C
0040170E 83C0 02 add eax, 2
00401711 83C6 02 add esi, 2
00401714 84C9 test cl, cl
00401716 ^ 75 DC jnz short 004016F4
00401718 33C0 xor eax, eax
0040171A EB 05 jmp short 00401721
0040171C 1BC0 sbb eax, eax ;这个地方和用户名比较正好相反,不能跳入jnz short 0040173D, 00403034里就是正确的信息,所以,和用户名比较相反,这里要让eax为0, 应该从上面的jmp short 00401721处跳; 所以密码应该和这里的明文完全一样.
0040171E 83D8 FF sbb eax, -1
00401721 85C0 test eax, eax
00401723 6A 00 push 0
00401725 6A 00 push 0
00401727 75 14 jnz short 0040173D
00401729 68 34304000 push 00403034
0040172E 8BCF mov ecx, edi
00401730 E8 11030000 call <jmp.&MFC42.#4224_CWnd::MessageBoxA>
00401735 5F pop edi
00401736 5E pop esi
00401737 5B pop ebx
00401738 C3 retn
00401739 6A 00 push 0
0040173B 6A 00 push 0
0040173D 68 20304000 push 00403020
00401742 E8 F9020000 call <jmp.&MFC42.#1200_AfxMessageBox>
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
第二个比较简单了, 内存里能看到密码"<BrD-SoB>", 用的strcmp比较, 相对就pass,不等就报错.
我自己是个新手啊,给同样的新手们简单说下怎么断到这个地方的:
1. 运行一遍CM2.exe,随便输入一个序列号,看到用MessageBox弹出的对话框;确认应该断MessageBox函数.
2. BP MessageBoxA / BP MessageBoxW. 不知道是否用的 Unicode版本,两个都断.
3. OllyDbg启动CM2运行,输入一密码后,点Button被OllyDbg断住.
4. Alt + K看堆栈, 看有没有CM2空间的调用. 这一次有,点过去设置个断点.
5. 但是断的地方是一个jmp dword ptr [<&MFC42.#4224_CWnd::MessageBoxA>],没有任何价值; 在这个地方设个断点,然后重新回到3.
6. 再看堆栈,呵呵,找到了吧?
Address Stack Procedure / arguments Called from Frame
0012F87C 004015AB <jmp.&MFC42.#4224_CWnd::MessageBoxA> cm2.004015A6 0012F8AC
0012F8B0 73D324C0 cm2.00401512 MFC42.73D324BD 0012F8AC
0012F8C0 73D323BF MFC42.73D3243E MFC42.73D323BA 0012F8BC
|
能力值:
( LV9,RANK:180 )
|
-
-
20 楼
观念错误..
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
第一个
任何第一个字母大于k 的字符串 如:i,ia,i3>,j,jer等等
9527888
第二个
<BrD-SoB>
|
能力值:
( LV9,RANK:180 )
|
-
-
22 楼
if username > 'hanyu'
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
嗯,说的对。我只看到sub eax, -1能把eax设置为0, 没看到cmp本身也可以改变al。 确实是只要字符串大于'hanyu'就可以。
|
能力值:
( LV3,RANK:30 )
|
-
-
24 楼
我个人认为啊 第一个破解方式有点像易语言 ,呵呵不过还没有破解好 现在正在破那 第2个太简单了 不说了
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
第一个,请问如何找到004016AC处,也就是算法开始处。谢谢!
|