![程序是否可以检测到另一个程序正在直接读取其内存(例如使用 ReadProcessMemory)?](https://linux22.com/image/1547795/%E7%A8%8B%E5%BA%8F%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%A3%80%E6%B5%8B%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F%E6%AD%A3%E5%9C%A8%E7%9B%B4%E6%8E%A5%E8%AF%BB%E5%8F%96%E5%85%B6%E5%86%85%E5%AD%98%EF%BC%88%E4%BE%8B%E5%A6%82%E4%BD%BF%E7%94%A8%20ReadProcessMemory%EF%BC%89%EF%BC%9F.png)
当我在 Github 公共仓库中浏览时,我偶然发现了一个程序(A)根据从另一个程序的内存中读取的内容在屏幕上显示信息(乙) 是一款在线电脑游戏。
声称readme
A绝对没有写信乙,但也警告用户有些人已被禁止乙因为A。
现在,很明显一个程序可以检测另一个程序是否正在更改其进程的内存......但检测一个程序是否正在读取它,例如通过使用读取进程内存从 Windows API 来看,这怎么可能呢?据我所知,该过程根本不知道系统上发生了什么,除非你有一些具有高级管理员权限的讨厌的“反作弊”软件,这些软件会监视整个系统,同时减慢系统速度。
有人能帮我解决这个问题吗?
提前致谢。
答案1
不。
问题在于,这个“readme”文件是为了分发“A”而创建的。当“A”分发了足够长的时间后,“B”意识到了“A”的存在,因此它开始专门寻找“A”。
如果“B”不知道“A”的存在,它将很难检测到“A”,甚至很难将其与“C”,“D”,“E”和“F”区分开来,并且几乎不可能理解“A”在做什么并据此采取行动。
从技术上讲,“A”可以在许多其他级别上运行,并且可以通过多种方式读取“B”内存,而不是简单的 API 调用。
如果有的话,“A”可以冻结“B”,阅读有趣的内容,然后杀死“B”,阻止“B”采取任何行动。(这就是为什么“B”通常由“X”、“Y”和“Z”同时守护)
“B” 可以使“A”更加困难,但是考虑到两者投入的努力相同,它根本无法阻止或检测到它。