我正在尝试找到一种方法来动态加载我需要使用的每个 Windows API 函数。例如,要使用printf
函数,我会执行以下操作:
#include <windows.h>
typedef int (*printfPtr)(const char *str, ...);
int main(){
HMODULE handle = LoadLibraryA("crtdll.dll");
if(handle == NULL) return;
printfPtr printfAdr = (printfPtr)GetProcAddress(handle, "printf");
(*printfAdr)("This is a test\n");
}
这是一个快速编码的工作片段。这样做很容易,因为我按照指南告诉我可以printf
从crtdll.dll
. 但是,现在我想加载该CreateFileA
函数,但我不知道如何找到要加载的正确 dll。
我已经尝试用 Google 搜索一些东西并在 MSDN 上进行搜索,但我没有找到任何东西。一般来说,给定一个函数(一个常见的函数,例如 in 或 中的一个windows.h
)stdio.h
,stdlib.h
我如何找到要加载的 dll?
注意 我知道你们中的一些人可能认为这种方式加载功能没有用。然而,这不是真正的程序。在真实的情况下,地址LoadLibraryA
和GetProcAddress
是手动找到的,我可以编写代码然后从 PE 中导出段。