OllyDbg**的简单实例

这一个很简单的程序,无加壳无加密,但**的思路都是一样的。
利用OllyDbg对程序中的Serial功能进行**,并用**后的程序覆盖原程序。**成功后,输入任何***都会弹出成功信息。
OllyDbg**的简单实例
OllyDbg**的简单实例
正常情况下,输入一个错误***后,点击”Check it Baby!”按钮,会弹出报错:
OllyDbg**的简单实例
这里我们利用OllyDbg对其进行**,使得无论输入什么,都显示成功。

先找失败/成功的字符串

失败时提示的是Try Again,那么用OllyDbg打开程序后,右键->search for->All referenced string 参考文本字符串
OllyDbg**的简单实例
打开后拖到最底下:OllyDbg**的简单实例
发现有好几个Try Again,也有几个Good job dude的成功信息。那么我们从下往上试试看。
最下面的Good job dude前面对应着0042FB0C,即追踪0042FB0C处字串,右键,Follow in Disassembler
OllyDbg**的简单实例
追踪后发现上面有一个跳转指令,通过跳转指令后会跳到Try Again的失败信息,如不跳转,则是Good job的成功信息。所以,将此跳转指令**,就可以直接按顺序运行到Good job。
OllyDbg**的简单实例
这里我们按F2下个断点验证一下:
OllyDbg**的简单实例
运行后发现程序一直执行,并没有停下来,可以判断这里不是我们想要**的地方,所以取消断点,去验证第一处的成功信息。
OllyDbg**的简单实例
即追踪0042F4DE处字串,发现一个跳转指令,同样的,设置断点验证
OllyDbg**的简单实例
程序没有执行到底,可知这条指令是我们要**的目标。不跳转则继续下面的指令,显示成功信息。

进行**

双击此条指令,将弹窗里的文本改为NOP:
OllyDbg**的简单实例
点击Assemble:
OllyDbg**的简单实例
运行:
无论输入什么,都显示Good job
OllyDbg**的简单实例
**成功!
最后记得保存噢
OllyDbg**的简单实例
OllyDbg**的简单实例