0x01 环境与工具
系统:吾爱破解XP SP3
工具:PEiD,OD(ICE版)
0x02 程序概览
程序分为两部分。第一部分是Serial/Name,需要输入用户名和注册码:

另一部分输入序列号:

0x03 暴破流程
首先任意输入用户名和注册码:

我们发现会弹出提示框”Sorry,The serial is incorrect!”,于是在OD中F3载入,运行到如上图所示,不着急点确定。此时在OD中F12暂停,然后ALT+F9返回用户领空,再点击确定,程序暂停在这里:

很明显,这里是调用了MessageBox,也就是我们看到的提示框。于是在55 push ebp处F2下断,F9运行。再点击check按钮,程序停在断点处。这时点击OD里的K按钮(或ALT+K)观察堆栈信息,发现这个地址处调用了MessageBox:

双击上图中红框位置来到此地址,发现了很眼熟的字符串:

往上翻代码,发现有两处跳转jnz和jmp比较可疑:

由上图可知jnz处是爆破的关键点,因为会跳转到错误提示框处。

jmp则是跳过错误提示,不用修改。
分析到这里,只需将jnzshort 0042FB1F处用nop填充即可(右键->二进制->用Nop填充)。然而,当我们输入形如123这样程度较短的伪码时,依然会弹出错误提示框。于是重复上述步骤,来到如下图位置:

这里存在一个跳转jge, 跳转条件是一个函数的返回值(存放在eax中)与4的比较结果,若不小于4则跳转,否则执行弹出错误提示框,所以我们把这里改为jmp。

最后保存patch后的文件。右键->复制到可执行文件->所有修改:

右键->保存文件:

再运行我们patch后的程序:

爆破完成
2043

被折叠的 条评论
为什么被折叠?



