【发布时间】:2012-08-27 14:11:55
【问题描述】:
当 ntdll.dll 映射到新进程时,以及任何 ntdll 的进程初始化运行之前,我想使用以下命令闯入 WinDBG。
sxe ld ntdll.dll ;g
但是,这个技巧根本不起作用,
ModLoad: 7c900000 7c9b0000 ntdll.dll
eax=010043af ebx=7ffde000 ecx=020f18f5 edx=00000034 esi=00c2f720 edi=00c2f6f2
eip=7c810867 esp=0006fffc ebp=00000720 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000200
7c810867 ?? ???
Processing initial command 'sxe ld ntdll.dll ;g'
0:000> sxe ld ntdll.dll ;g
(ae8.6f4): Break instruction exception - code 80000003 (first chance)
eax=00181eb4 ebx=7ffde000 ecx=00000001 edx=00000002 esi=00181f48 edi=00181eb4
eip=7c901230 esp=0006fb20 ebp=0006fc94 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ntdll!DbgBreakPoint:
7c901230 cc int 3
那么,当ntdll.dll映射到新进程时,如何闯入WinDBG? 谢谢
[更新]
我完全按照 jcopenha 提到的步骤进行操作,但我不知道 Windbg 为什么会在运行 Notepad.exe 时出现奇怪的错误(内存访问错误)。
请帮帮我!非常感谢!
0:000> .restart /f
CommandLine: C:\WINDOWS\NOTEPAD.EXE
Symbol search path is: D:\Symbols\Symbols;SRV*D:\Symbols\MySymbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
ModLoad: 01000000 01014000 notepad.exe
eax=0100739d ebx=7ffd9000 ecx=020f18f5 edx=0000004e esi=00f7f73a edi=00f7f6f2
eip=7c810867 esp=0007fffc ebp=0000024c iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000200
7c810867 ?? ???
0:000> u 7c810867
7c810867 ?? ???
^ Memory access error in 'u 7c810867'
[更新2] 我发现7c810867显示了一条奇怪的指令,但是p命令仍然可以工作。
这是 WinDBG 中的错误吗?
【问题讨论】:
-
希望有人能帮帮我!谢谢
-
出现问号的原因是您使用的是内核调试器,而此时页表不存在。因此,当您执行 p(跳过)时,异常由内存管理器处理并将内存映射为可用(这就是您看到它的原因)。