Debugging Tools for Windows |
.thread 命令指定哪个线程用作寄存器上下文。
如果包含/p 选项并且Thread 为0或省略,则禁止这种转换。 (这种行为和.cache noforcedecodeuser一样)
模式 | 仅内核模式 |
目标 | 活动目标、崩溃转储 |
平台 | 所有 |
一般来说,内核调试时只有当前线程关联的寄存器才是可见的。
.thread 命令指示内核调试其使用指定线程作为寄存器上下文。命令执行后,调试器就可以访问该线程的重要寄存器和堆栈回溯了。该寄存器上下文会一直持续到允许目标执行或者使用另一个寄存器上下文命令(.thread、 .cxr或 .trap)为止。查看寄存器上下文获得详细信息。
/w 选项只能在64位内核调试会话中调试WOW64 状态的进程中的线程时可以使用。获得的上下文是WOW64最近一次记录的上下文,这通常是Thread最后执行的用户模式代码。该选项只有当目标在原生机器模式(native machine mode)时才可用。例如,如果目标运行在通过WOW64模拟x86处理器的机器上,该选项就不能使用。使用/w 选项会使得机器模式变成自动切换到x86处理器。
该命令并不实际改变当前线程。换句话说,如果不带参数时, !thread 和!teb 扩展命令仍然作用于当前线程。
这里有一个示例。使用 !process 扩展命令来找到需要的线程的地址。(这里,!process 0 0用于显示所有进程,第二次的 !process 用于显示需要的进程中所有线程。)
**** NT ACTIVE PROCESS DUMP ****
PROCESS fe5039e0 SessionId: 0 Cid: 0008 Peb: 00000000 ParentCid: 0000
DirBase: 00030000 ObjectTable: fe529a88 TableSize: 145.
Image: System
.....
PROCESS ffaa5280 SessionId: 0 Cid: 0120 Peb: 7ffdf000 ParentCid: 01e0
DirBase: 03b70000 ObjectTable: ffaa4e48 TableSize: 23.
Image: winmine.exe
kd> !process ffaa5280
PROCESS ffaa5280 SessionId: 0 Cid: 0120 Peb: 7ffdf000 ParentCid: 01e0
DirBase: 03b70000 ObjectTable: ffaa4e48 TableSize: 23.
Image: winmine.exe
VadRoot ffaf6e48 Clone 0 Private 50. Modified 0. Locked 0.
DeviceMap fe502e88
Token e1b55d70
.....
THREAD ffaa43a0 Cid 120.3a4 Teb: 7ffde000 Win32Thread: e1b4fea8 WAIT: (WrUserRequest) UserMode Non-Alertable
ffadc6a0 SynchronizationEvent
Not impersonating
Owning Process ffaa5280
WaitTime (seconds) 24323
Context Switch Count 494 LargeStack
.....
现在使用 .thread 命令和需要的线程的地址。这会设置寄存器上下文并且可以查看该线程的重要寄存器和调用堆栈。
Using context of thread ffaa43a0
kd> r
Last set context:
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000000 edi=00000000
eip=80403a0d esp=fd581c2c ebp=fd581c60 iopl=0 nv up di pl nz na pe nc
cs=0000 ss=0000 ds=0000 es=0000 fs=0000 gs=0000 efl=00000000
0000:3a0d ?? ???
kd> k
*** Stack trace for last set context - .thread resets it
ChildEBP RetAddr
fd581c38 8042d61c ntoskrnl!KiSwapThread+0xc5
00001c60 00000000 ntoskrnl!KeWaitForSingleObject+0x1a1
关于寄存器上下文和其他上下文设置的更多信息,查看改变上下文。