有没有办法检查单个(C++ 编译的)DLL 文件并找出它调用的 Win32 函数?
我有MyDll.dll
档案。我知道在这个 dll 中的某个地方,有一段代码正在从 Windows 注册表中检索信息。
有没有办法找出 DLL 正在访问的注册表项?
您可以访问 DLL 的 PE 导入表来确定 DLL 静态链接到哪些 Win2 API 函数,但这并不能保证这些函数在 DLL 的代码中实际被调用,并且这也不考虑动态加载的 Win32 API 函数通过GetProcAddress()
.
要找出 DLL 正在访问哪些注册表项,您可以:
RegOpenKeyEx()
、RegQueryValueEx()
和其他注册表函数的所有位置。您需要执行 DLL;如果您这样做,那么 Sysinternals(现在是 Microsoft 的一部分)进程监视器将向您显示该进程进行的所有注册表访问,并捕获每个的堆栈跟踪(您可以使用它来查找从该 DLL 进行的调用)。