【发布时间】:2014-11-27 16:48:38
【问题描述】:
我有一个用作模拟系统 RAM 的字节数组。我想为给定的单元格制作一个防弹补丁,它可以检测到它何时被写入,并立即覆盖它。使用像
这样的循环for (;;) {
address = x;
sleep(y);
}
有一个缺陷,即 sleep 有一个最小可能值,这似乎与模拟的帧长度几乎相同,因此它每帧只会修补一次地址。所以,如果一个游戏每帧写入 100 次,这样的补丁就没有意义了。
我有一些关于写作的钩子,但那些只能通过阅读正在执行的游戏代码来捕获写入,而我想让这些补丁适用于任何内存区域,而不仅仅是 RAM,因此我不能依赖解释模拟的代码太多(它根本不匹配我要修补的所有区域)。
所以我需要一些实用的观察点,有一个指向数组的指针,以及一个我想观察变化的字节。
【问题讨论】:
-
如果同一页面上没有太多其他内容,保护页面和/或写保护页面可能对使用 MMU 的系统有所帮助。
-
也许检查您选择的性能库(TAU 或 PAPI 仅举两个)是否暴露了其对内存访问的挂钩
-
处理器有哪些内置调试器硬件?