crack5中的坑
注册验证函数中,各种int 3,致使进入通过SetUnhandledExceptionFilter设置的异常处理函数TopLevelExceptionFilter,在TopLevelExceptionFilter控制验证函数中的执行流程,由于先前我用的win7 x64调试,注册毫无反应,以为验证函数无法正常完整执行,so手工乱恢复,看了writeup之后,在xp中调试,你妹,居然可以正常执行…这是坑吗
某两大神writeup中的解题思路
- geek710 FROM SSEg33k
在TopLevelExceptionFilter亦有花,geek710大神的想法是,走一遍TopLevelExceptionFilter,去除功能代码,然后再要跳去执行验证函数的位置,nop验证函数中所有花,这样,一次执行完整之后,就可以得到无花的验证函数,beautiful,跟着这个思想走了一下,不晓得那弄错了,每次都异常退出,下面是提取的TopLevelExceptionFilter的大致代码:
1 | 00401336 87ED xchg ebp,ebp |
本来这个是很妙的方法,但是无奈没成功,换一个思路
- Anonymous
这个方法较麻烦,在 00401416 mov dword ptr ds:[esi+0xB8],edx
处下条件断点,byte ptr[edx] != 0xCC
,每次断下之后,记录edx指向的代码(新的int 3之前),完整记录之后,就是注册验证的代码,手工记录如下(不会脚本啊):
1 | 0040168D 6A 01 push 0x1 |
根据这个写出注册机就行
注册算法
待续