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

问题描述

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

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

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

如果它返回的不是null,我可以说这个函数使用了吗?

解决方法

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

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


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

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

,

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

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

因此,根据您所说的“使用过的”是什么意思,它可能适合也可能不适合您的需求。