0

我正在Visual Studio 2010中处理WIN32 项目。我正在尝试通过 ClamAV(开源防病毒)引擎扫描我的主内存,以在主内存中搜索恶意/受感染文件。

到目前为止,我编写的代码使用 Windows 函数CreateToolhelp32Snapshot创建了整个主内存的快照

然后我从快照中打开一个特定的进程,并将其传递给 ClamAV 引擎,然后引擎决定它是否是恶意的。我每 10 秒重复一次整个机制。但我认为这不是一种有效的方法,

我想要做的是扫描我的整个内存一次,然后我只扫描那些在主内存中新创建的进程。请指导我有没有办法只从内存而不是整个内存中获取新创建的方法

4

1 回答 1

1

我认为它不能纯粹在用户空间程序中完成。我对 Windows API 不是很熟悉,但我可以给你一些粗略的提示。

  1. 您应该在执行每个程序之前对其进行扫描。
  2. 使所有内存成为以后分配的程序不可执行(NX 位)
  3. 程序在尝试执行时会触发页面错误,现在扫描它!
  4. 将扫描到的内存设为只读,然后继续执行
  5. 一旦程序尝试写入此区域,请再次使其不可执行。

注意:如果您想确保安全,内存区域永远不能同时变为可执行和可写。

这样,您只需要检查那些正在执行的内存。它应该非常有效。

于 2013-09-13T06:29:10.153 回答