如何在加载任何链接的 DLL 之前停止程序?
我尝试过设置LoadLibraryExW
函数在Break At Function
调试选项,它会在该函数处停止,但在此之前,我在 Visual Studio 输出窗口中有以下内容:
'test.exe': Loaded 'C:\Windows\System32\ntdll.dll', Symbols loaded (source information stripped).
'test.exe': Loaded 'C:\Windows\System32\kernel32.dll', Symbols loaded (source information stripped).
'test.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Symbols loaded (source information stripped).
'test.exe': Loaded 'C:\Windows\System32\uxtheme.dll', Symbols loaded (source information stripped).
'test.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Symbols loaded (source information stripped).
---- plus about 30 DLLs ---
那么如何在加载之前停止调试器中的程序ntdll.dll
?好的,不是在加载之前,而是在执行任何一个之前DllMain
函数和初始化任何静态对象之前。
您可以通过使用 exe 的名称将注册表项添加到“图像文件执行选项”来完成此操作。添加名为“Debugger”的字符串类型值,并将其设置为 vsjitdebugger.exe 以启动即时调试器对话框。然后,您可以选择可用的调试器之一,包括 Visual Studio。在 Windows 加载 EXE 后、任何代码开始运行之前,会立即触发此对话框。
下面是一个示例 .reg 文件,当您启动 notepad.exe 时,该文件会触发该对话框。将密钥名称修改为您的.exe:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe]
"Debugger"="vsjitdebugger.exe"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)