04 判断线程是否为GUI线程

Window XP中打开一个DebugView应用程序,使用WinDbg查看它的进程和线程的情况


kd> ! process 0 0
Failed to get VadRoot
PROCESS 899d1bb8  SessionId: 0  Cid: 00f4    Peb: 7ffdf000  ParentCid: 05ec
    DirBase: 18b7c000  ObjectTable: e10f6310  HandleCount:  70.
    Image: Dbgview.exe

kd> dt _EPROCESS 899d1bb8 
...
   +0x190 ThreadListHead   : _LIST_ENTRY [ 0x899b5804 - 0x89a776ec ] ;线程列表
   +0x198 SecurityPort     : (null) 
   +0x19c PaeTop           : (null) 
   +0x1a0 ActiveThreads    : 2 ;活动线程数量
...

接下来我们查看这两个线程

kd> dd  0x899b5804-0x22c+0xe0
ReadVirtual: 899b56b8 not properly sign extended
899b56b8  8055b1e0 00000000 00000000 00000000
899b56c8  000a0008 00000000 899b56d0 899b56d0
//可以看到该线程是GUI线程

kd> dd  0x89a776ec -0x22c+0xe0
ReadVirtual: 89a775a0 not properly sign extended
89a775a0  8055b220 00000000 00000000 00000000
89a775b0  010a0008 00000000 89a77578 89a77578

查看系统服务表

kd> dd KeServiceDescriptorTable
8055b220  804e36a8 00000000 0000011c 80511088
8055b230  00000000 00000000 00000000 00000000
8055b240  00000000 00000000 00000000 00000000


kd> dd KeServiceDescriptorTableShadow
8055b1e0  804e36a8 00000000 0000011c 80511088
8055b1f0  bf999b80 00000000 0000029b bf99a890
8055b200  00000000 00000000 00000000 00000000


你们可以使用命令 : ! process 899d1bb8 更简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值