链接一个未知的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。因此我们可以得出结论,它的依赖项不存在。
查阅文档以了解需要哪些依赖项。
我有这个 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。因此我们可以得出结论,它的依赖项不存在。
查阅文档以了解需要哪些依赖项。