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