1

我在 MadCHook 库中的方法 InjectLibrary 的帮助下将 dll 注入到进程中。我能够成功地做到这一点。但后来我尝试使用 UninjectLibrary() 方法通过一个完全独立的 C++ 程序取消注入它,我成功了。简而言之,任何知道我的 dll 名称的人都可以取消注入它。我怎样才能防止这种情况?提前致谢!

4

1 回答 1

0

解决方案是使用手动映射作为您的 DLL 注入技术。这样一来,解析加载的 DLL 的所有常规 API 将完全不知道您的 DLL。您的 DLL 不会在模块的 PEB->Ldr 链表中被引用,也不会存在 PE 头。

此外,作为一种快速修复,您可以随机化 DLL 的名称。

您还可以挂钩FreeLibrary()FreeLibraryAndExitThread(),检查他们是否试图卸载您的 DLL 并返回。

于 2020-03-28T19:05:33.447 回答