我正在研究Windows编程,我有一些问题。
我看到了一个保护内存数据的安全模块。 如果一个进程要更改其他进程内存,它会检测并关闭进程。
这通常用于游戏或银行应用程序中的反作弊引擎(我住在韩国,所以我认为这是最好的例子。几乎每个在线游戏或银行应用程序都有自我防御算法。 )
我的问题是,是否有任何API或功能检测到这一点?
感谢。
P.S。 我可以举个例子,
如果 0x01000000 内存数据&#39; <&#39; ,某些不同的流程会将其更改为&#39; B&#39; 。 当我第一次想到这一点时,我认为我必须创建一个线程来检查数据,如果它发生了变化,请关闭该过程。 但我认为这不是一个好主意。有什么建议吗?
答案 0 :(得分:2)
您的问题的一般答案:不,没有这样的API或功能。
但是有不同的方法可以达到相同的效果。 Api挂钩。您可以在系统中挂钩函数(例如WriteProcessMemory),然后检查是否有人试图在您的过程中更改某些内容。有关此问题的更多信息here。 2.调试。您可以在函数或内存更改上使用调试断点。
答案 1 :(得分:0)
有 an API 允许您监视对特定内存区域的写入操作。
UINT GetWriteWatch(
DWORD dwFlags,
PVOID lpBaseAddress,
SIZE_T dwRegionSize,
PVOID *lpAddresses,
ULONG_PTR *lpdwCount,
LPDWORD lpdwGranularity
);
当 API 检测到任何写入操作时,它会将写入地址附加到您作为 API 参数提供的数组中,直到您的数组已满。