c++ - 通过进程或 dll 的内存转储识别内存代码注入(inject)

标签 c++ code-injection memory-dump

为了识别内存代码注入(inject)(在windows系统上),我想对系统上所有进程的内存进行hash,比如calc.exe的内存一直是x,现在是y,我知道有人注入(inject)了calc.exe代码。

1:这个思路对吗?进程内存的哪一部分始终保持不变,哪一部分在变化?

2:dll是在单独的内存中,还是在exe的内存中?换句话说,我可以为 dll 的内存生成哈希吗?

3:如何在 C++ 中转储进程或 dll 的内存?

最佳答案

在运行 windows 时,代码不断地被注入(inject)到进程中。

一个例子是延迟加载的 DLL。当进程启动时,只加载核心 DLLS。当执行某些功能时,代码首先从磁盘加载新的 DLL(代码),然后执行它。

另一个例子是 .NET 托管应用程序。大多数代码作为未编译的代码保存在磁盘上。当应用程序的新部分需要运行时,.NET 运行时会加载未编译的代码,对其进行编译(也称为 JIT),然后执行它。

您试图解决的问题是值得的,但非常困难。操作系统本身会尝试解决此问题以保护您的进程。

如果你想做一些比 Windows 在幕后为你做的更高级的事情,首先要做的是了解 Windows 为保护进程和验证注入(inject)其中的代码而采取的所有步骤,同时仍然使进程能够动态加载代码(这是必要的)。

祝你好运。

或者您有更具体的问题要解决?

关于c++ - 通过进程或 dll 的内存转储识别内存代码注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441593/

相关文章:

windows-10 - 您如何获得 Windows 错误报告 (WER) 以保存挂起的内存转储?

c++ - QTreeView、QItemDelegate 和刷新其他项目?

使用派生类的 C++ 模板转换

c++ - 如何在 OpenGL 中将对象旋转一定度数?是否有内置命令或我必须使用公式?

javascript - 是否有办法拦截 Web 应用程序发出的 javascript 调用

html - 为什么这 5(6?)个字符被视为 "unsafe"HTML 字符?

c# - 使用 C# 进行内存转储

c++ - 线程构建 block : Deadlocks because all threads used up

javascript - 如何间接使用ContentScripts中网页定义的函数?

web-applications - 自定义错误模块无法识别此错误