2013-04-29 48 views
0

我有一個使用託管代碼和非託管代碼混合使用的可執行文件。我沒有它的源代碼,但我可以反編譯它。如何根據正在讀取的註冊表項設置斷點?

我所知道的是在某個時候它讀取一個註冊表項,然後根據註冊表中的程序集名稱加載一個管理的DLL。所以我想設置一個關於正在讀取的註冊表鍵的斷點,而不管它是否在託管代碼或非託管代碼中讀取,然後查看(希望管理的)堆棧跟蹤。然後,我的計劃是使用ILSpy來逐步從那裏開始反編譯的代碼,並觀察有問題的DLL被使用。

這是可能通過Visual Studio調試器,windbg或其他調試器?我對WinDbg並不滿意,但如果我要使用它,我會的。

回答

0

我在那裏。它可能通過a special syntax調試Win32 API函數。

{,,FOO.DLL}[email protected] 

除非其64位DLL在這種情況下不存在裝飾:

我的過程是32位。我已經無法使用下列任何一項獲得裝飾功能的列表:

我相信這是由於血散裝錯版的DLL。

但是,this post on Zach Burlingame's blog枚舉了註冊表項。

我需要設置的斷點是{,Advapi32.dll} _RegOpenKeyExW @ 20。

現在我需要在註冊表路徑上創建條件斷點。