有沒有辦法檢查單個(C++編譯的)DLL文件並找出Win32函數調用它的內容?如何檢查DLL的信息
我有MyDll.dll
文件。我知道在這個DLL的某個地方,有一段代碼從Windows註冊表中檢索信息。
有沒有辦法找出DLL正在訪問的註冊表項?
有沒有辦法檢查單個(C++編譯的)DLL文件並找出Win32函數調用它的內容?如何檢查DLL的信息
我有MyDll.dll
文件。我知道在這個DLL的某個地方,有一段代碼從Windows註冊表中檢索信息。
有沒有辦法找出DLL正在訪問的註冊表項?
您可以訪問DLL的PE Imports表以確定DLL靜態鏈接到哪個Win2 API函數,但這並不能保證函數實際上是在DLL的代碼中調用的,並且這也不包含Win32 API函數通過GetProcAddress()
動態加載。
要找出註冊表項中的DLL正在訪問它,您可以:
RegOpenKeyEx()
,RegQueryValueEx()
的地方,和其他註冊表功能正在被調用。您需要執行DLL;如果你這樣做了,那麼Sysinternals(現在是Microsoft的一部分)進程監視器將顯示進程所做的所有註冊表訪問,並捕獲每個堆棧跟蹤(可用於查找來自該DLL的調用)。