我可以使用 GetProcAdress 来检查我的进程中使用了哪个 dll 函数吗?

Can I use GetProcAdress to check which dll function is used in my process?

我可以使用 GetProcAdress 来检查我的进程中使用了哪个 dll 函数吗?

我想从我进程中的 运行 dll 检测特定函数。

GetProcAddress(GetModuleHandle(TEXT("any.dll")), "AnyFunction");

如果返回的不是null,我能说这个函数用了吗?

GetProcAddress 将找到任何函数,使用的 或未使用的 ,它由已加载到进程中的 DLL 导出。

此外,它不会找到导出的已用函数。

因此,根据您所说的“用过”的含义,它可能适合也可能不适合您的需要。

GetProcAddress 实际上是在检查特定函数是否在特定 DLL 中被 导出

我想你想要的是检查特定函数是否被 导入 在特定的 DLL 中,AFAIK 没有 API 可以做到这一点,你必须自己手动解析PE数据,得到你想要的。


好吧,根据您的新评论,您想在运行时通过 LoadLibrary 获取哪些其他 DLL 被加载,对吗?

如果是这样,解析PE数据已经不能满足您的要求,您需要在自己的进程中hook LoadLibraryGetProcAddress()函数。