在调试Windows进程时,有时尽早中断是很方便的。
初始调用栈看起来像这样:
...
ntdll.dll!_LdrpCallInitRoutine@16() + 0x14 bytes
ntdll.dll!_LdrpRunInitializeRoutines@4() + 0x205 bytes
> ntdll.dll!_LdrpInitializeProcess@20() - 0x96d bytes
ntdll.dll!__LdrpInitialize@12() + 0x6269 bytes
ntdll.dll!_KiUserApcDispatcher@20() + 0x7 bytes
因此,在其中一个ntdll例程中设置一个断点应该确实会非常早地中断该过程。
但是,在调试器中启动进程之前,我无法弄清楚如何在此处设置断点。在Visual Studio(2005)中可以吗?如何?可以在WinDbg中完成吗?
最佳答案
当进程启动时,我将使用GFlags之类的东西来启动调试器。
这是test.exe的示例gflags设置
这是调试器的输出。注意ntdll!LdrpInitializeProcess
的调用栈
或者,您可以在调试器中像Windbg一样打开进程,默认情况下该进程会分解为ntdll!LdrpInitializeProcess
。
高温超导