gpt4 book ai didi

c++ - 如何使用黑名单/通过唯一标识一个 dll 来阻止 dll 注入(inject)?

转载 作者:可可西里 更新时间:2023-11-01 10:18:02 26 4
gpt4 key购买 nike

我目前被指派编写一段代码来确定一个 dll 是否被列入黑名单,如果是,则不应允许加载。 Google Chrome 有这个功能,所以我检查了 Google chrome 的代码,发现他们维护着一系列被列入黑名单的 dll,他们可以保护自己不受这些 dll 的影响。我尝试了一些其他的东西,比如我试图改变被阻止的 dll 的导入表、dll 的名称和许多其他东西,然后试图将它注入(inject) chrome,但不知何故 chrome 能够唯一地识别被注入(inject)的 dll 是一个列入黑名单的 dll 和防止它发生。

有没有人对如何实现这一点有任何想法或指示??

谢谢,迪帕克 :)

最佳答案

我假设他们维护的是白名单,而不是黑名单,这就是为什么您对程序集的修改仍然没有导致加载 dll。

编辑:从您的评论来看,事实并非如此!看起来他们维护着一个黑名单并做了一些arcane invocation NtMapViewOfSection 以防止加载 dll(这让我很庆幸我不必使用 Windows API):

#if defined(_WIN64)// Interception of NtMapViewOfSection within the current process.// It should never be called directly. This function provides the means to// detect dlls being loaded, so we can patch them if needed.SANDBOX_INTERCEPT NTSTATUS WINAPI BlNtMapViewOfSection64(    HANDLE section, HANDLE process, PVOID *base, ULONG_PTR zero_bits,    SIZE_T commit_size, PLARGE_INTEGER offset, PSIZE_T view_size,    SECTION_INHERIT inherit, ULONG allocation_type, ULONG protect);#endif
// Replace the default NtMapViewOfSection with our patched version.#if defined(_WIN64)  NTSTATUS ret = thunk->Setup(::GetModuleHandle(sandbox::kNtdllName),                              reinterpret_cast(&__ImageBase),                              "NtMapViewOfSection",                              NULL,                              &blacklist::BlNtMapViewOfSection64,                              thunk_storage,                              sizeof(sandbox::ThunkData),                              NULL);

除了 Chromium 的方法之外,还有许多第 3 方应用程序可以加强动态库的加载,例如Arxan GuardIT .

.Net程序集你也可以strongly-signed使用私钥,则应用程序将仅加载由该 key 签名的 dll。

关于c++ - 如何使用黑名单/通过唯一标识一个 dll 来阻止 dll 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36450016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com