我正在将一个dll注入一个进程,该进程是来自MadCHook库的方法InjectLibrary的帮助。我成功地做到了。 但后来我试图通过一个完全独立的C ++程序使用UninjectLibrary()方法取消注入它,我成功了。 简而言之,任何知道我的dll名称的人都可以取消注意它。 我该如何防止这种情况? 提前谢谢!
答案 0 :(得分:0)
解决方案是将“手动映射”用作DLL注入技术。这样,所有解析加载的DLL的常规API都将完全不了解您的DLL。您的DLL将不会在PEB-> Ldr链接的模块列表中被引用,也不会存在PE标头。
此外,作为一种快速解决方案,您可以随机化DLL的名称。
您还可以钩住FreeLibrary()和FreeLibraryAndExitThread(),检查它们是否试图卸载DLL并返回。