C++ 中的内存扫描
Memory Scan in c++
我正在Visual Studio 2010中从事WIN32项目。我正在尝试通过ClamAV(开源防病毒)引擎扫描我的主内存,以搜索主内存中的恶意/受感染文件。
到目前为止,我编写的代码通过使用Windows函数CreateToolhelp32Snapshot创建整个主内存的快照
然后我从快照中打开一个特定的进程,并将其传递给 ClamAV 引擎,然后引擎决定它是否是恶意的。 我每 10 秒重复一次整个机制。但我认为这不是一种有效的方法,
我想做的是扫描我的整个内存一次,之后我只扫描那些在主内存中新创建的进程。请指导我有什么方法可以仅从内存而不是整个内存中获取新创建的方法
我认为这不能纯粹在用户空间程序中完成。我对Windows API不是很熟悉,但我可以给你一些关于如何做的粗略提示。
- 您应该在执行每个程序之前对其进行扫描。
- 使以后分配的所有内存都不可执行(NX 位)
- 该程序在尝试执行时将触发页面错误,立即扫描!
- 将扫描的内存设为只读,然后继续执行它
- 一旦程序尝试写入此区域,使其再次不可执行。
注意:如果要确保安全性,内存区域永远不能同时变为可执行和可写。
这样,您只需检查正在执行的内存。而且它应该非常有效。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 如何在另一个过程内存中扫描INT值
- 如何加快我的内存扫描程序
- C++ 中的内存扫描
- 我真的需要扫描内存两次来执行memcmp + memcpy吗?
- 扫描内存(C++)
- 扫描进程内存导致崩溃