【问题标题】:Can you use Detours in an exe?你可以在exe中使用Detours吗?
【发布时间】:2020-01-29 00:10:52
【问题描述】:

我想替换 LoadLibrary 函数以防止加载可能被注入的列入黑名单的 dll。

我从 _win32.cpp 复制了我需要的 LoadLibrary 函数的示例代码。我使用了 LoadLibraryW、LoadLibraryExW、LoadLibraryA 和 LoadLibraryExA。只显示一个调用,因为它们都相同,只是函数名称。

DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());

LONG l = DetourDetach(&(PVOID&)Real_LoadLibraryA, Mine_LoadLibraryA);
if (l != 0)
{
  __debugbreak();
}

PVOID* ppbFailedPointer = nullptr;
LONG error = DetourTransactionCommitEx(&ppbFailedPointer);
if (error != 0)
{
  __debugbreak();
}

DetourDetach 始终返回 ERROR_INVALID_BLOCK。 我可以很好地运行示例,但它们都是使用 dll 注入代码的示例。

【问题讨论】:

  • 这是一个记录在案的错误代码,“功能太小”。这并不奇怪,LoadLibraryA() 并没有做太多,而是转换了它的参数。你最好绕道真正的LoadLibraryW()。这也绕过了 LoadLibraryA() 兼容性垫片,抓住两者肯定是你想要的。
  • 我试过 LoadLibraryExW、LoadLibraryW 和 LoadLibraryExA。都返回相同的错误。我只展示了一个函数,因为除了函数名称之外,所有函数都相同。
  • 您为什么不使用此信息编辑问题?下一个可能的原因是它已经打了补丁,反恶意软件对任何弄乱这个 winapi 函数的人都非常感兴趣。

标签: detours


【解决方案1】:

谢谢,有人看,这是我的愚蠢错误。当我应该调用 DetourAttach 时,我调用了 DetourDetach。

我现在可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2010-09-23
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多