【发布时间】:2013-10-20 20:21:05
【问题描述】:
我正在开发一个使用 Detours 记录特定 WIN32 调用的应用程序 (DLL)。它被注入到通过过滤器的目标应用程序中。从应用程序入口点的第一条指令开始,它必须绝对记录应用程序的每次调用。
我现在正在寻找一种方法,让我的应用程序(始终运行的应用程序)尽可能快地注入 DLL,最好不要让目标应用程序进行任何其他调用。
有什么办法可以做到吗?
【问题讨论】:
-
你要求一个钩子让你的注入在 exe 入口点之前运行。似乎有点难以置信。
-
这怎么难以置信?一旦一个新的应用程序启动(让我们选择 notepad.exe 为例),它就会开始加载。操作系统会将程序集加载到内存中并开始执行它。在它到达 main() 方法(应用程序的入口点)之前,我需要干预并施展魔法来注入 DLL。
-
好吧,main 不是入口点。我认为这是难以置信的,因为我认为操作系统不会给你那个钩子。当然,如果您正在启动该过程,您可以将其创建为暂停。
-
我会尽量澄清一点。我经常使用 'procmon',Sysinternals 的进程监视器。这是我需要拦截 API 调用的那种方法,因为从程序开始到结束的每个调用都被记录在那里。
-
procmon 使用 ssdt 挂钩 IIRC