为什么我的内存断点在 OllyDbg 中没有触发?

逆向工程 ollydbg 聚乙烯 反调试 保护
2021-06-19 23:54:35

我目前正在与 32 位可执行文件上的这种保护作斗争。

在它的运行过程中的一些点,保护得到的地址DbgUiRemoteBreakin并写入JMPExitProcess作为抗粘结技术。我决定在该位置的 write 上放置一个内存断点(我也尝试过访问),至少我会找出哪些代码改变了代码。在设置断点后,我F9只为我的内存 bp 从未触发而击中,我尝试了多次。代码被修改了,但是我的内存bp没有被触发。这是我第一次没有触发内存断点。我很困惑为什么会发生这种情况。我唯一的猜测是它DbgUiRemoteBreakin位于ntdll.dll 中,这就是保护页面在那里不起作用的原因。也有我在该函数上设置内存 bp 时发生崩溃的情况。

但是,我希望有人遇到过这种情况并且可以进行更深入的解释。我的 ollydbg 版本是 1.10。

1个回答

断点未命中的最可能原因是受保护的文件将其删除。

编辑:如果断点是基于硬件的,那么受保护的文件可以使用GetThreadContext()、擦除 DR 条目、SetThreadContext(). 如果断点是基于页面保护的,则受保护的文件可以使用VirtualProtect().