一个CrackMe

CrackMe地址:http://bbs.pediy.com/showthread.php?t=139622

PEiD查壳:

 

 

 

 

 

 

 

 

ESP定律脱壳:pushad过后,esp为0x12FF96,此处下硬件断点(Command中输入hr 12FF96,并在调试/硬件断点中查看)。

 

 

 

 

 

F9运行到断点,发现0x40510B处jmp 0x401000,即为OEP。来到0x401000处发现乱码,右键—>分析/分析代码即可。

设消息断点:删除硬件断点,F9让程序运行起来。菜单—>查看/窗口,找到“确定”按钮,右键—>设消息断点,设置WM_LBUTTONUP的消息断点。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

输入帐号和密码并“确定”,程序断在系统领空,此时无法使用Ctrl+F9返回或Alt+F9返回到用户领空,Alt+M为CrackMe的整个.text代码段下内存访问断点,再F9就会停在消息处理例程(乱码则右键—>分析/分析代码)。

核心处理如下图:

 

 

 

 

 

两个GetDlgItemTextA分别取帐号和密码,ebx中保存帐号长度,eax中保存密码长度,二者必须相等,否则在0x401111处跳到失败。

 

 

 

ebx即帐户长度,必须0> && <7。

 

 

 

 

 

接上,0x401129-0x401137这段是对帐户字符串进行累加,从0x401139处可以看出必须等于0x282时才能注册成功。这样写个注册机也不难了。

 

 

 

 

 

 

 

我是直接修改了edx为0x282爆破。



Comments are closed.