Microsoft Detours 是否可以用于挂钩系统范围的调用而不注入每个过程?
Can Microsoft Detours be used to hook system-wide calls without injecting into every proc?
我想挂钩 每个 调用 CreateProcess
(以及其他一些相关的 API),无论过程如何。现代的Detours是否可以在不枚举所有进程并执行注入的情况下执行此操作?
我已经阅读了几篇关于 API 挂钩和使用 Detours 这样做的文章,回复:
API Hooking with MS Detours (InfoSec Institute)
我对这些文章有两个问题:
他们已经很老了,事情可能已经改变了。
他们没有彻底解决系统范围内的挂钩问题,特别是使用 Detours。
我知道这可以通过驱动程序来完成,但是据说 Detours 是一个强大的工具,并且目前仍受支持,所以我想知道如何使用 Detours 来完成。
到目前为止,我阅读的文献都是针对使用 Detours 的特定程序,尽管它提出了如何枚举每个进程并执行 DLL 注入然后尝试使用 Detours 的想法,这似乎是一种非常不可靠的方式。
没有
如果没有每个进程注入,就不能全局使用 Detours。
然而,当你想在系统已经运行之后设置一个初始钩子时,你只需要手动枚举一次进程。一种选择(如果你小心的话)是使用 AppInit_DLLs
Registry setting to have your DLL loaded into new processes (well, at least processes that use user32.dll
, and that don't opt-out of letting AppInit_DLLs
run, and providing that AppInit_DLLs
is even enabled on the system 作为开头。
否则,另一种方法是编写实现 process creation callback that is registered via PsSetCreateProcessNotifyRoutine()
的内核驱动程序。每次创建或销毁进程时都会调用该回调。
我想挂钩 每个 调用 CreateProcess
(以及其他一些相关的 API),无论过程如何。现代的Detours是否可以在不枚举所有进程并执行注入的情况下执行此操作?
我已经阅读了几篇关于 API 挂钩和使用 Detours 这样做的文章,回复:
API Hooking with MS Detours (InfoSec Institute)
我对这些文章有两个问题:
他们已经很老了,事情可能已经改变了。
他们没有彻底解决系统范围内的挂钩问题,特别是使用 Detours。
我知道这可以通过驱动程序来完成,但是据说 Detours 是一个强大的工具,并且目前仍受支持,所以我想知道如何使用 Detours 来完成。
到目前为止,我阅读的文献都是针对使用 Detours 的特定程序,尽管它提出了如何枚举每个进程并执行 DLL 注入然后尝试使用 Detours 的想法,这似乎是一种非常不可靠的方式。
没有
如果没有每个进程注入,就不能全局使用 Detours。
然而,当你想在系统已经运行之后设置一个初始钩子时,你只需要手动枚举一次进程。一种选择(如果你小心的话)是使用 AppInit_DLLs
Registry setting to have your DLL loaded into new processes (well, at least processes that use user32.dll
, and that don't opt-out of letting AppInit_DLLs
run, and providing that AppInit_DLLs
is even enabled on the system 作为开头。
否则,另一种方法是编写实现 process creation callback that is registered via PsSetCreateProcessNotifyRoutine()
的内核驱动程序。每次创建或销毁进程时都会调用该回调。