今天在使用windbg双机调试windows系统的时候遇到了这么个问题,在使用.process指令更改当前所挂靠的进程的时候无法更改具体的情况如下
[Asm] 纯文本查看 复制代码 kd> !process 0 0
Failed to get VadRoot
PROCESS 815b1998 SessionId: 0 Cid: 074c Peb: 7ffde000 ParentCid: 05a0
DirBase: 08e40340 ObjectTable: e2874848 HandleCount: 61.
Image: OllyDBG.EXE
kd> .process 815b1998
Implicit process is now 815b1998
WARNING: .cache forcedecodeuser is not enabled
kd> .process
Implicit process is now 805539a0
请问这种出现的无法更改是什么情况呢
然后如果使用.process /i 815b1998 后再运行的方式确实更改了.process
[Asm] 纯文本查看 复制代码 kd> .process /i 815b1998
You need to continue execution (press 'g' <enter>) for the context
to be switched. When the debugger breaks in again, you will be in
the new process context.
kd> g
Break instruction exception - code 80000003 (first chance)
nt!RtlpBreakWithStatusInstruction:
80528bdc cc int 3
kd> .process
Implicit process is now 815b1998
但是随后跟踪搜索他的_EPROCESS结构体,发现其中的pid为4,进程名为系统进程
[Asm] 纯文本查看 复制代码 kd> dt _KPRCB ffdff120
ntdll!_KPRCB
+0x000 MinorVersion : 1
+0x002 MajorVersion : 1
+0x004 CurrentThread : 0x817bb3c8 _KTHREAD
;获取ethread结构体地址
kd> dt _ethread 0x817bb3c8
ntdll!_ETHREAD
+0x000 Tcb : _KTHREAD
+0x220 ThreadsProcess : 0x817bd830 _EPROCESS
;获取进程结构体地址
kd> dt _EPROCESS 0x817bd830
ntdll!_EPROCESS
+0x000 Pcb : _KPROCESS
+0x06c ProcessLock : _EX_PUSH_LOCK
+0x070 CreateTime : _LARGE_INTEGER 0x0
+0x078 ExitTime : _LARGE_INTEGER 0x0
+0x080 RundownProtect : _EX_RUNDOWN_REF
+0x084 UniqueProcessId : 0x00000004 Void
+0x174 ImageFileName : [16] "System"
;获取到的进程结构体,部分数据忽略
求教为何会出现这种.process指令无法挂靠,挂靠后进程不对的情况,如何解决? |