我可以使用 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 LoadLibrary
和GetProcAddress()
函数。
我可以使用 GetProcAdress
来检查我的进程中使用了哪个 dll 函数吗?
我想从我进程中的 运行 dll 检测特定函数。
GetProcAddress(GetModuleHandle(TEXT("any.dll")), "AnyFunction");
如果返回的不是null,我能说这个函数用了吗?
GetProcAddress
将找到任何函数,使用的 或未使用的 ,它由已加载到进程中的 DLL 导出。
此外,它不会找到未导出的已用函数。
因此,根据您所说的“用过”的含义,它可能适合也可能不适合您的需要。
GetProcAddress
实际上是在检查特定函数是否在特定 DLL 中被 导出 。
我想你想要的是检查特定函数是否被 导入 在特定的 DLL 中,AFAIK 没有 API 可以做到这一点,你必须自己手动解析PE数据,得到你想要的。
好吧,根据您的新评论,您想在运行时通过 LoadLibrary
获取哪些其他 DLL 被加载,对吗?
如果是这样,解析PE数据已经不能满足您的要求,您需要在自己的进程中hook LoadLibrary
和GetProcAddress()
函数。