在使用OD调试时,有时候上下滚动下鼠标发现同一地址的处的汇编代码居然发生了变化。如图一是正常代码,向上滚动一行发现代码却变成了图二所示的模样。
图一
图二
观察一下发现,0040B3FC处的指令数据时8B4DFC, 0040B3FB处的的指令数据是008B4DFC。显然OD在分析这些指令数据的时候出错了,指令有一个字节的错位,因此后面所有的指令解析都错了,产生了完全不同的指令。
解决办法:
按几下ctrl+up,直到先前代码再次出现为止,如下:
图三
这个问题我之前都遇到了好几次,最初以为是什么反调试技术,网上也不好查。最后只得静下心来自己观察,恍然大悟,就是这么简单的原因。