双机调试,如果系统被断下,所有核“凝固”。
下面是我机器的输出:1: kd> ln KiProcessorBlock(8055c580) nt!KiProcessorBlock | (8055c600) nt!KiFreezeFlagExact matches: nt!KiProcessorBlock = <no type information>1: kd> dd KiProcessorBlock8055c580 ffdff120 f78b2120 00000000 000000008055c590 00000000 00000000 00000000 000000008055c5a0 00000000 00000000 00000000 000000001: kd> dt nt!_KPRCB 0xffdff120 +0x000 MinorVersion : 1 +0x002 MajorVersion : 1 +0x004 CurrentThread : 0x8055be40 _KTHREAD +0x008 NextThread : (null) +0x00c IdleThread : 0x8055be40 _KTHREAD +0x010 Number : 0 '' +0x011 Reserved : 0 '' +0x012 BuildType : 0 +0x014 SetMember : 1 +0x018 CpuType : 6 '' +0x019 CpuID : 1 '' ......1: kd> dt nt!_KPRCB f78b2120 +0x000 MinorVersion : 1 +0x002 MajorVersion : 1 +0x004 CurrentThread : 0x816aa830 _KTHREAD +0x008 NextThread : (null) +0x00c IdleThread : 0xf78b4e20 _KTHREAD +0x010 Number : 1 '' +0x011 Reserved : 0 '' +0x012 BuildType : 0 +0x014 SetMember : 2 +0x018 CpuType : 6 '' +0x019 CpuID : 1 '' ......1: kd> !thread 0x8055be40 THREAD 8055be40 Cid 0.0 Teb: 00000000 Win32Thread: 00000001 RUNNINGIRP List:unable to get IRP objectNot impersonatingOwning Process 8055c0a0Wait Start TickCount 0 Elapsed Ticks: 6561Context Switch Count 16922 NoStackSwapUserTime 9:03:58.0187KernelTime 9:03:53.0812Start Address 0x00000000Stack Init 80551700 Current 8055144c Base 0 Limit 8054e700 Call 1Priority 16 BasePriority 97 PriorityDecrement 0 DecrementCount 8Kernel stack not resident.
ChildEBP RetAddr Args to Child80551450 80545d2c 00000000 0000000e 00000000 intelppm!AcpiC1Idle+0x1280551454 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x101: kd> !thread 0x816aa830 THREAD 816aa830 Cid 0.816aaa14 Teb: 7ffde000 Win32Thread: 00000003 RUNNINGWaiting for reply to LPC MessageId 816aaa2c:Pending LPC Reply Message: 816aaa2c: [816aaa2c,816aaa2c]IRP List:unable to get IRP objectNot impersonatingOwning Process 816686e8Wait Start TickCount -144696204 Context Switch Count 844 LargeStackUserTime 15:49:57.0937KernelTime 15:49:53.0562PerfCounter 1Start Address 0x816837ccStack Init f5c93000 Current f5c92b7c Base 0 Limit f5c8f000 Call 3Priority 15 BasePriority -96 PriorityDecrement 0 DecrementCount 25Kernel stack not resident.
ChildEBP RetAddr Args to Childf5c92998 8052b6f1 00000001 f5c92d64 017ed514 nt!RtlpBreakWithStatusInstructionf5c92be4 8052b878 8052b858 ffffffff 00000000 nt!vDbgPrintExWithPrefix+0x10ff5c92c00 f58537f4 f58536d0 81794118 f5c92d64 nt!DbgPrint+0x1af5c92c34 f5b89c00 00000029 f5c92d2c f5c92c4c Basic!HookFunction41+0xb4f5c92c68 f5b8ce8a 00000029 f5c92d2c f5c92c98 hookport!HpCallHookPortItem+0x70f5c92d48 8054160c 00000000 00000000 017ed52c hookport!ProxyNtUserFindWindowEx+0x4af5c92d48 7c92eb94 00000000 00000000 017ed52c nt!KiFastCallEntry+0xfc017ed4f4 77d1fce8 77d3f23a 00000000 00000000 ntdll!KiFastSystemCallRet017ed53c 77d3f25a 00000000 00000000 773aff24 +0x77d1fce8017ed558 77417d14 773aff24 00000000 017edd40 +0x77d3f25a017ed950 77418ab8 00000001 017ed968 00010102 +0x77417d14017edd24 00411cb1 00000001 017edd40 00d550d8 +0x77418ab8017edd28 00000000 017edd40 00d550d8 000e00e3 +0x411cb1这就是两个核上的“当前线程”,某线程调用栈上居然还有 MJ 同学的 hookport ... 呵呵