windows – 我可以在ntdll.dll中设置断点!_LdrpInitializeProce
在调试 Windows进程时,有时会尽可能早地中断. Inital Callstack看起来像这样:(例如,当您在DLL_PROCESS_ATTACH上的DllMain函数中设置断点时,可以得到此信息) ... 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. HTH (编辑:瑞安网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |