我认为系统调用是可行的方法,并且比实际尝试扫描多个进程的内存空间更可行。虽然我不是低级别的 Windows 人,但似乎这可以使用 Windows API 挂钩来完成 - 将低级别 API 绑定到可以修改系统范围对系统调用的响应。这些钩子可以像内核模块一样安装,并拦截并可能修改系统调用。我在 CodeProject 上找到了一篇提供更多信息的文章。
In a machine learning course I took, a group decided to try something similar to what you're describing for a semester project. They used a list of recent system calls made by a program to determine whether or not the executing program was malicious, and the results were promising (think 95% recognition on new samples). In their project, they trained using SVMs on windowed call lists, and used that to determine a good window size. After that, you can collect system call lists from different malicious programs, and either train on the entire list, or find what you consider "malicious activity" and flag it. The cool thing about this approach (aside from the fact that it's based on ML) is that the window size is small, and that many trained eager classifiers (SVM, neural nets) execute quickly.
Anyway, it seems like it could be done without the ML if it's not your style. Let me know if you'd like more info about the group- I might be able to dig it up. Good luck!