好友
阅读权限40
听众
最后登录1970-1-1
|
Emil
发表于 2014-10-22 21:19
本帖最后由 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:[esi-0x4]
判断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:[esp+edi+0x698] ; 31
...中间代码,就是一些计算,看的不是很明白
循环的次数,根据NANM的长度计算
00401CC4 3BFB cmp edi,ebx
00401CC6 ^ 7C A8 jl short CrackMe.00401C70
00401CC8 8B7424 10 mov esi,dword ptr ss:[esp+0x10]
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:[esp+edi+0x6A4] 这里获取key的acsii,因为key小于3位,所以
程序自动补从4位对应的ascii为00 03 00 00,然后循环key长度+4的次数
..
00401D89 3B7C24 10 cmp edi,dword ptr ss:[esp+0x10]
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 就可以爆破
总结:大概就这个样子,算法看的头晕晕的。
CrackMe_bp.rar
(686.64 KB, 下载次数: 11)
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|