首页
社区
课程
招聘
[求详细过程]放个CrackMe,求高手写出分析
发表于: 2009-9-22 11:11 9552

[求详细过程]放个CrackMe,求高手写出分析

2009-9-22 11:11
9552
收藏
免费 0
支持
分享
最新回复 (31)
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
用OD 调试就死机,装了两个OD,都当机.......
2009-9-28 20:32
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
27
那就是你OD问题啊
2009-9-28 21:23
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
28
哎 自己构造代码 够麻烦的啊
2009-11-14 11:20
0
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
29
如果有一个已知的正确注册码,这类CrackMe的难度就大大降低了。
(很多要PJ的软件往往也能得到一个正确的KEY)
2009-11-14 11:43
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
30
现在已经有了一个正确的KEY了  我猜不出来第二个呢....
2009-11-14 11:51
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
看不懂大师写的,
”首先可以确定解码后的最后一位是0 并且之前的8位应该都是小写字母 根据这个条件可以确定密码的长度只可能为10 11 13 14 15 “
这个结果怎么来的不知道,我只知道密码是以0结尾的,包括结尾0的最长15字节的字符串,就这么多了,后面是不是该用暴力了?
2009-11-17 15:13
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
“首先可以确定解码后的最后一位是0...”

这个想明白了,因为最后eax 要等于6DB6D800,而这个值是shl eax, 3左移3位以后的值,将eax右移三位再取低8位((eax >> 3) & 0xFF),就是最后那个字节解码后的值,为0x00。依次往前推,可以推出前面还有几个字母。下班了,回家推导去。

吃完饭了,继续。

”并且之前的8位应该都是小写字母...“
我把每一步都详细列出来了:
代码:
0040103B  |>  8A86 10304000 /mov     al, byte ptr [esi+403010]
00401041  |.  02C3          |add     al, bl
00401043  |.  3283 00304000 |xor     al, byte ptr [ebx+403000]
00401049  |.  88043E        |mov     byte ptr [esi+edi], al
0040104C  |.  C1E0 03       |shl     eax, 3
......这里没有往eax中写入,所以都忽略了......
00401064  |>  83FE 49       |cmp     esi, 49
00401067  |.^ 75 D2         \jnz     short 0040103B
00401069  |.  3D 00D8B66D   cmp     eax, 6DB6D800

也就是说所有的0x50个都生成了之后eax=6DB6D800。每次先将eax右移3位,然后取其al就是解码后的值,由于每次al都赋有新的值,所以用XXXX XXXX代替。
6     D     B     6     D     8     0     0            al
0110 1101 1011 0110 1101 1000 0000 0000
XXX0 1101 1011 0110 1101 1011 0000 0000        =>0x00              最后一个[0]       
       
XXX0 1101 1011 0110 1101 1011 XXXX XXXX                              上一次eax值       
XXXX XX01 1011 0110 1101 1011 011X XXXX        =>0x6X - 0x7X    [-1]

XXXX XX01 1011 0110 1101 1011 XXXX XXXX
XXXX XXXX X011 0110 1101 1011 011X XXXX        =>0x6X - 0x7X    [-2]

XXXX XXXX X011 0110 1101 1011 XXXX XXXX
XXXX XXXX XXXX 0110 1101 1011 011X XXXX        =>0x6X - 0x7X    [-3]       

XXXX XXXX XXXX 0110 1101 1011 XXXX XXXX
XXXX XXXX XXXX XXX0 1101 1011 011X XXXX        =>0x6X - 0x7X    [-4]       

XXXX XXXX XXXX XXX0 1101 1011 XXXX XXXX
XXXX XXXX XXXX XXXX XX01 1011 011X XXXX        =>0x6X - 0x7X    [-5]
XXXX XXXX XXXX XXXX XX01 1011 XXXX XXXX
XXXX XXXX XXXX XXXX XXXX X011 011X XXXX        =>0x6X - 0x7X    [-6]
XXXX XXXX XXXX XXXX XXXX X011 XXXX XXXX
XXXX XXXX XXXX XXXX XXXX XXXX 011X XXXX        =>0x6X - 0x7X    [-7]       

呵呵,我只能推出最后8个中7个是小写字母,最后1个是0。
再往下还没想出来。

再结合汇编代码,只能推出密码的可能长度是7-15字节。然后就卡壳了。
2009-11-17 16:59
0
游客
登录 | 注册 方可回帖
返回