小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

 

小甲鱼 OD 教程:https://www.bilibili.com/video/av6889190?p=20

 

 

堆栈调用方法

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

程序运行后,直接断点到 004DC0D1 这个 位置,按 F8一直没反应,打开程序,可以看到 neg 窗口,

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

点击 exit ,关闭 neg 窗口,发现程序开始往下走

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

可以断定,断点位置的 call 调用就是neg窗口的过程:

既然找到了关键的 call 调用的位置,所以也应该在函数开始的位置下个断点( 即机器码 是 55 的位置,对应汇编代码为 push ebp ):

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

通过单步调试分析可知,jnz 位置是 跳过 neg 窗口的关键,直接 nop 掉( 更改原则:越早更改越好 )

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

保存所有修改:

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

运行改完后的程序,发现没有 neg 窗口。。。