可以使用Microsoft Detours来挂接系统范围的调用而不会注入每个proc吗?

时间:2017-09-26 05:27:47

标签: windows winapi detours

我希望将每次调用CreateProcess(和其他一些相关的API)挂钩,无论进程如何。现代Detours可以用来做这个而不用枚举所有过程和进行注射吗?

我已经阅读了几篇关于API挂钩的文章,特别是与Detours一起做的,重新:

API Hooking with MS Detours

API Hooking with MS Detours (InfoSec Institute)

API Hooking Revealed

我对这些文章有两个问题:

  1. 他们已经很老了,事情可能已经发生了变化。

  2. 他们没有特别使用Detours完全解决系统范围内的挂钩问题。

  3. 我知道这可以通过驱动程序完成,但Detours据说是一个强大的工具,目前仍然受支持,所以我想知道如何使用Detours完成。

    到目前为止,我所阅读的文献都是针对使用Detours定位特定程序的,尽管它已经提出了如何枚举每个进程并执行DLL注入然后尝试使用Detours,这似乎是一种非常不可靠的方式。

1 个答案:

答案 0 :(得分:6)

NO

没有每个进程注入,Detours不能全局使用。

但是,如果要在系统运行后设置初始挂接,则只需手动枚举一次进程。一个选项(如果你小心)是使用AppInit_DLLs Registry setting将你的DLL加载到新进程中(好吧,至少使用user32.dll的进程,并且不要选择 - 不允许AppInit_DLLs运行,并提供AppInit_DLLs is even enabled on the system开头。

否则,另一种方法是编写实现process creation callback的内核驱动程序,该驱动程序通过PsSetCreateProcessNotifyRoutine()注册。每次创建或销毁进程时都会调用该回调。