链接一个未知的dll

Linking an unknown dll

我有这个 dll(称为 unknown.dll),我只知道 Ghidra 告诉我的内容。我正在使用 LoadLibraryW 加载它,但是(在 x86 中)它抛出错误 126。但是,在 64x 中它给我错误 193,所以我不认为问题是我的程序找不到我的dll... 这是我的代码:

#include <iostream>
#include <Windows.h>

typedef int(__cdecl* FunctionIWant)();

int main()
{
HMODULE hmod = LoadLibraryW(L"C:\unknown.dll");

if (hmod != NULL)
{
    ...
}

else
    std::cout << GetLastError();

return 0;
}

我做错了什么?

126 是 ERROR_MOD_NOT_FOUND。要么找不到您的 DLL,要么找不到它的依赖项。

193 是 ERROR_BAD_EXE_FORMAT。这是因为您不能混合使用 32 位和 64 位 DLL。

当您在 64 位下 运行 时得到 ERROR_BAD_EXE_FORMAT 的事实告诉您找到了您的 DLL。因此我们可以得出结论,它的依赖项不存在。

查阅文档以了解需要哪些依赖项。