绕过基本内存保护

逆向工程 ollydbg 反调试 记忆
2021-06-29 01:53:16

我想使用 OllyDBG 调试游戏。当我在游戏主菜单时,我可以毫无问题地调试和设置断点,当我使用Cheat Engine打开游戏进程时,我可以查看内存。

进入游戏地图前附加游戏

但是当我开始玩游戏并进入游戏地图时,断点触发时游戏崩溃。而且,当我尝试重新连接作弊引擎时,无法读取内存。

进入游戏地图后附加到游戏

当我再次回到主菜单时,保护被关闭......我可以查看内存,并再次调试。

知道哪个函数应该添加 bp 以跟踪此内存保护吗?我已经在 上添加了 bp IsDebuggerPresent,但它没有触发,所以我很确定它不是那个。

2个回答

首先尝试从硬件 BP 而不是软件 BP(“常规的”)开始,但请记住,您只有 4 个硬件 BP,并且它们是每个特定线程的。

此外,考虑到您所说的

无法读取内存

那么我会建议

  • 将 BP 设置为VirtualFree/NtFreeVirtualMemory并从那里追溯以了解内存是有意释放还是由于某些错误。
  • 如果上述方法不起作用,请尝试在相同功能上使用硬件 BP,并GetThreadContext检查是否存在反调试以清理硬件 BP。

如果您使用的是 OllyDbg(不是 OllyDbg 2),则有一些插件可以帮助使应用程序误以为它没有被调试。

查看“隐藏调试器”插件。

如果这不起作用,那么您可能必须进入并手动弄清楚它在做什么。您可能想在开始时尝试中断,然后进行一些静态分析以弄清楚从那时起发生了什么。祝你好运!