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

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

当我再次回到主菜单时,保护被关闭......我可以查看内存,并再次调试。
知道哪个函数应该添加 bp 以跟踪此内存保护吗?我已经在 上添加了 bp IsDebuggerPresent,但它没有触发,所以我很确定它不是那个。
我想使用 OllyDBG 调试游戏。当我在游戏主菜单时,我可以毫无问题地调试和设置断点,当我使用Cheat Engine打开游戏进程时,我可以查看内存。

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

当我再次回到主菜单时,保护被关闭......我可以查看内存,并再次调试。
知道哪个函数应该添加 bp 以跟踪此内存保护吗?我已经在 上添加了 bp IsDebuggerPresent,但它没有触发,所以我很确定它不是那个。
首先尝试从硬件 BP 而不是软件 BP(“常规的”)开始,但请记住,您只有 4 个硬件 BP,并且它们是每个特定线程的。
此外,考虑到您所说的
无法读取内存
那么我会建议
VirtualFree/NtFreeVirtualMemory并从那里追溯以了解内存是有意释放还是由于某些错误。GetThreadContext检查是否存在反调试以清理硬件 BP。如果您使用的是 OllyDbg(不是 OllyDbg 2),则有一些插件可以帮助使应用程序误以为它没有被调试。
查看“隐藏调试器”插件。
如果这不起作用,那么您可能必须进入并手动弄清楚它在做什么。您可能想在开始时尝试中断,然后进行一些静态分析以弄清楚从那时起发生了什么。祝你好运!