0

我需要检测第三方 .NET 应用程序的进程创建。我的目标是注入一个插件 DLL 来增强这个应用程序的功能。我宁愿尽早注入它,这样我就可以捕获应用程序的初始化事件。有什么方法可以检测何时创建此进程并在调用 Main 之前注入 DLL?

4

3 回答 3

4

通常的解决方案是用在受控参数下启动原始映像的存根替换目标应用程序映像。

还有其他方法,例如GFlags,但它们旨在用于调试而不是用于正常操作。

于 2009-12-01T00:08:58.133 回答
2

如果您无法按照 Remus 的建议替换原始应用程序,您可能需要考虑使用系统级挂钩并拦截 CreateProcess() API 系列函数并监视它们的所有调用。

请参阅:API 挂钩揭示

这有点复杂,您可能会遇到各种问题,例如 vista 和其他挂钩库的问题:http: //forum.madshi.net/viewtopic.php?p=15833

于 2009-12-01T00:36:03.333 回答
-2

馊主意。

您可能会认为我很苛刻,但我已经看到我的进程崩溃了,因为一些小丑认为将一些随机 DLL 注入其中以“增强功能”是一个好主意。您可能会破坏其他所有人的地址空间。停下来。更重要的是,当你的错误代码把他们搞砸时,他们会受到指责。

允许您将代码注入另一个进程的 API 实际上是用于编写调试器的。如果您不编写调试器,请不要在生产代码中使用它们。你在玩火。

于 2009-12-01T00:41:18.287 回答