绕过 WH_CALLWNDPROC 全局挂钩 + Dll 注入(第 3 环)的其他替代方案?

Other alternatives to bypass WH_CALLWNDPROC global hook + Dll injection (Ring 3)?

我想知道每次执行任何进程时绕过 rootkit 进行的 dll 注入的可能解决方案是什么( WH_CALLWNDPROC 消息检测这个)?

基于我的案例以及 this answer,我已经知道(并测试过)两种可以 100% 绕过此问题的替代方案,它们是::

1UnhookWindowsHookEx

2。通过其他进程执行我的进程,标志 DEBUG_ONLY_THIS_PROCESS 使用 CreateProcess,以接收 DLL 加载的通知,当检测到这一点时,我获取 dll 的 EntryPoint 并写入一些东西,然后 dll 被卸载。


3。其他可能的解决方案可能是 TLS 回调,就像上面链接的答案中所说的那样,但我不知道如何(在代码中)实现 anti dll injection。有人知道并可以给出代码示例吗?

提前感谢 suggestion/or 其他绕过这种 dll 注入方式的替代方法。


版本:

我认为上面列举的第三种可能的解决方案似乎值得 一个注意。然后我通过一个关于这个的代码示例的答案进行搜索:"A process can host a TLS callback, and then it will receive notifications of thread creation. That can intercept thread creation such as what is produced by CreateRemoteThread. If the thread start address is LoadLibrary(), then you have a good indication that someone is about to force-load a DLL." 然后阻止 dll 注入。

我认为没有必要继续寻找不同的替代方案,而是使用您已经找到的替代方案,例如UnhookWindowsHookEx。如果您愿意,请尝试使用 TLS 回调。