Emil 发表于 2014-10-22 21:19

【吾爱破解2014CrackMe大赛】【第二组】

本帖最后由 L4Nce 于 2014-10-24 22:30 编辑


1.通过消息断点,来到按钮事件入口点
00401B50    55            push ebp入口

获取NAME
00401BF4    E8 2E060100   call CrackMe.00412227
00401BF9    68 04010000   push 0x104

获取key
00401C13    E8 0F060100   call CrackMe.00412227
00401C18    8BF0            mov esi,eax

判断NAME长度,如果小于3,直接不处理
00401C3B    83FF 03         cmp edi,0x3
00401C3E    77 1B         ja short CrackMe.00401C5B
00401C40    8D46 FC         lea eax,dword ptr ds:
判断Key长度,如果小于3,直接不处理
00401C43    83F8 03         cmp eax,0x3
00401C46    77 13         ja short CrackMe.00401C5B
综合起来NAME和KEY 有一个长度大于3就可以,要不然无任何提示

这里逐字节获取NAME的ascii,进行计算
00401C6E    8BFF            mov edi,edi
00401C70    0FBE843C 980600>movsx eax,byte ptr ss:    ; 31
...中间代码,就是一些计算,看的不是很明白
循环的次数,根据NANM的长度计算
00401CC4    3BFB            cmp edi,ebx
00401CC6^ 7C A8         jl short CrackMe.00401C70

00401CC8    8B7424 10       mov esi,dword ptr ss:
00401CCC    33FF            xor edi,edi
00401CCE    85F6            test esi,esi
00401CD0    0F8E BD000000   jle CrackMe.00401D93      //如果key长度小于等于3的话,会进入下面的计算
..                                                      如果key长度大于3位,则不会进入
00401CE0    0FBE843C A40600>movsx eax,byte ptr ss: 这里获取key的acsii,因为key小于3位,所以
程序自动补从4位对应的ascii为00 03 00 00,然后循环key长度+4的次数
..
00401D89    3B7C24 10       cmp edi,dword ptr ss:
00401D8D^ 0F8C 4DFFFFFF   jl CrackMe.00401CE0    //到这里结束key的计算


从这里
00401D93    33C9            xor ecx,ecx
一直到
00401E51    81F9 4EFA9EFA   cmp ecx,0xFA9EFA4E
中间一大堆计算,晕了

00401E51    81F9 4EFA9EFA   cmp ecx,0xFA9EFA4E经过一系列算法,获得值和FA9EFA4E比较,如果相等就成功
00401E57    75 12         jnz short CrackMe.00401E6B //算法看的不是很明白,只能爆破了
这里jnz修改nop或者74 就可以爆破



总结:大概就这个样子,算法看的头晕晕的。








ximo 发表于 2014-10-24 17:51

最后成绩:80*70%*50%=28分
评委评价:爆破有效。
谢谢参与,请继续加油。
页: [1]
查看完整版本: 【吾爱破解2014CrackMe大赛】【第二组】