【发布时间】:2012-01-05 16:53:07
【问题描述】:
我正在学习windows编程,我有一些问题。
我看到了一个保护内存数据的安全模块。 如果一个进程要更改其他进程的内存,它会检测并关闭该进程。
这通常用于游戏或银行应用程序的反作弊引擎(我住在韩国,所以我认为这是最好的例子。几乎每个在线游戏或银行应用程序都有自卫算法。 )
我的问题是,是否有任何 API 或函数可以检测到这一点?
谢谢。
附: 我可以举个例子,
如果 0x01000000 内存数据为 'A',则某些不同的进程将其更改为 'B'。 当我第一次想到这个时,我认为我必须创建一个线程来检查数据,如果它发生变化,请关闭该进程。 但我认为这不是一个好主意。有什么建议吗?
【问题讨论】:
-
您是跨其他应用程序还是您自己的应用程序进行检测(即,这纯粹是内部功能,还是用于整个操作系统)?由于虚拟内存,您无法轻松直接访问任何其他应用程序的内存,但是可以做到。
-
@Nagi:没有现代操作系统(包括 Windows)允许一个进程更改另一个进程的内存。你说的是哪个安全模块?
-
@IgorKorkhov: msdn.microsoft.com/en-us/library/windows/desktop/…
-
@Igor Korhkov:如果你允许的话,他们当然可以。毕竟你的调试器以某种方式管理它。在他控制的机器上运行时,完全保护您的程序免受用户对其做“坏事”几乎是不可能的,通常会导致黑客/作弊者与应用程序程序员之间持续进行军备竞赛。
-
@SLaks, doynax:我当然知道调试器、内核驱动程序、特殊 API 和硬件调试器板。我只是想澄清所需的保护级别。