C++ 要求在应用程序启动前完成特定事件

C++ 要求在应用程序启动前完成特定事件,c++,winapi,detours,C++,Winapi,Detours,我正在开发一个应用程序(DLL),它使用迂回记录特定的WIN32调用。它被注入到通过过滤器的目标应用程序中。它必须绝对记录应用程序发出的每个调用,从应用程序入口点的第一条指令开始 我现在正在寻找一种方法,使我的应用程序(始终运行的应用程序)尽可能快地注入DLL,最好不要让目标应用程序进行任何其他调用 有什么方法可以实现这一点吗?您可以使用将dll加载到进程中。dll是在User32.dll的dll\u进程\u ATTACH期间加载的。对于常规应用程序,这应该发生在运行任何应用程序代码之前 请记住

我正在开发一个应用程序(DLL),它使用迂回记录特定的WIN32调用。它被注入到通过过滤器的目标应用程序中。它必须绝对记录应用程序发出的每个调用,从应用程序入口点的第一条指令开始

我现在正在寻找一种方法,使我的应用程序(始终运行的应用程序)尽可能快地注入DLL,最好不要让目标应用程序进行任何其他调用

有什么方法可以实现这一点吗?

您可以使用将dll加载到进程中。dll是在
User32.dll的
dll\u进程\u ATTACH
期间加载的。对于常规应用程序,这应该发生在运行任何应用程序代码之前

请记住。

您可以使用将dll加载到进程中。dll是在
User32.dll的
dll\u进程\u ATTACH
期间加载的。对于常规应用程序,这应该发生在运行任何应用程序代码之前


但请记住这一点。

据我所知,在Windows中没有直接的方法可以做到这一点

你的选择是:

  • 在所有进程中挂起CreateProcess(或更低级别)函数。创建新进程时,更改参数以将其创建为挂起、注入和恢复(如果需要)
  • 使用驱动程序

  • 据我所知,在Windows中没有直接的方法可以做到这一点

    你的选择是:

  • 在所有进程中挂起CreateProcess(或更低级别)函数。创建新进程时,更改参数以将其创建为挂起、注入和恢复(如果需要)
  • 使用驱动程序


  • 谢谢你的回答。我将对此进行评估,看看结果如何。:)好的,在阅读了它之后,我发现它的使用非常不稳定,Vista没有启用它,除非用户这样做。这个问题还有其他解决办法吗?它是不稳定的,因为程序员坚持要求在每个进程中尽早注入DLL。这听起来一定很熟悉:)LoadAppInit_DLL没有被禁用。我不确定在其他平台上是否可用,但这正是我想要的,并且在我的Windows XP专业虚拟机上完美地完成了它的工作。谢谢,接受!谢谢你的回答。我将对此进行评估,看看结果如何。:)好的,在阅读了它之后,我发现它的使用非常不稳定,Vista没有启用它,除非用户这样做。这个问题还有其他解决办法吗?它是不稳定的,因为程序员坚持要求在每个进程中尽早注入DLL。这听起来一定很熟悉:)LoadAppInit_DLL没有被禁用。我不确定在其他平台上是否可用,但这正是我想要的,并且在我的Windows XP专业虚拟机上完美地完成了它的工作。谢谢,接受!您正在请求一个钩子,以便在exe入口点之前运行注入。似乎有点难以置信,怎么会这样?一个新的应用程序一旦启动(以notepad.exe为例),它就会开始加载。操作系统将把程序集加载到内存中并开始执行它。就在它到达main()方法(应用程序的入口点)之前,我需要进行干预,并神奇地注入DLL。我认为这是难以置信的,因为我认为操作系统不会给你这个钩子。当然,如果你正在启动这个过程,你可以创建一个挂起的过程。我将尝试进一步澄清它。我经常使用“procmon”,这是系统内部的进程监视器。我需要截获API调用的就是这种方法,因为从程序开始到结束的每个调用都被记录在那里。procmon使用ssdt钩子IIRCO您需要一个钩子,以便在exe入口点之前运行注入。似乎有点难以置信,怎么会这样?一个新的应用程序一旦启动(以notepad.exe为例),它就会开始加载。操作系统将把程序集加载到内存中并开始执行它。就在它到达main()方法(应用程序的入口点)之前,我需要进行干预,并神奇地注入DLL。我认为这是难以置信的,因为我认为操作系统不会给你这个钩子。当然,如果你正在启动这个过程,你可以创建一个挂起的过程。我将尝试进一步澄清它。我经常使用“procmon”,这是系统内部的进程监视器。我需要截获API调用的就是这种方法,因为从程序开始到结束的每个调用都记录在那里。如果创建驱动程序,有哪些功能?这是否为我提供了解决问题的途径?驱动程序不是我的经验领域,但我看到了一个使用此技术的应用程序。您提供的链接非常好,似乎正是我想要的。你现在得到了我的支持票,如果这是我实现目标的答案,我会接受。你的第二点很有意思。如果创建驱动程序,有哪些功能?这是否为我提供了解决问题的途径?驱动程序不是我的经验领域,但我看到了一个使用此技术的应用程序。您提供的链接非常好,似乎正是我想要的。你现在得到了我的支持票,如果这是我实现目标的答案,我会接受的。