2013-04-29 85 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。

现在我需要在注册表路径上创建条件断点。