两个未导出变量 位置在KdSystemDebugControl下
本地内核调试需要用到KdSystemDebugControl函数 要动态的内核调试就需要来看看它干了什么
比较了KdpBootedNodebug KdPitchDebugger KdDebuggerEnabled
据我的了解KdpBootedNodebug非调试为1 此值是调试模式得代表之一
KdPitchDebugger 非调试也为1
KdDebuggerEnabled 不用多说 调试为1 非调试为0
而loc_1404DA4B7是返回失败
那么不用多说了
KdpBootedNodebug = FALSE;
KdPitchDebugger = FALSE;
KdDebuggerEnabled = TRUE;
Win8/8.1:KdLocalDebugEnabled = TRUE;
本地内核调试需要用到KdSystemDebugControl函数 要动态的内核调试就需要来看看它干了什么
PAGE:00000001404D9C00
PAGE:00000001404D9C00 mov [rsp+arg_0], rbx
PAGE:00000001404D9C05 mov [rsp+arg_8], rdi
PAGE:00000001404D9C0A push r12
PAGE:00000001404D9C0C sub rsp, 170h
PAGE:00000001404D9C13 mov r10, rdx
PAGE:00000001404D9C16 and [rsp+178h+var_134], 0
PAGE:00000001404D9C1B and qword ptr [rsp+178h+var_130], 0
PAGE:00000001404D9C21 and [rsp+178h+P], 0
PAGE:00000001404D9C27 cmp cs:KdpBootedNodebug, 0
PAGE:00000001404D9C2E jnz loc_1404DA4B7
PAGE:00000001404D9C34 cmp cs:KdPitchDebugger, 0
PAGE:00000001404D9C3B jnz loc_1404DA4B7
PAGE:00000001404D9C41 cmp cs:KdDebuggerEnabled, 0
PAGE:00000001404D9C48 jz loc_1404DA4B7
PAGE:00000001404D9C4E cmp ecx, 0Eh
PAGE:00000001404D9C51 jg loc_1404DA1D1
PAGE:00000001404D9C57 cmp ecx, 0Eh
PAGE:00000001404D9C5A jz loc_1404DA112
PAGE:00000001404D9C60 sub ecx, 7
PAGE:00000001404D9C63 jz loc_1404DA0EB
比较了KdpBootedNodebug KdPitchDebugger KdDebuggerEnabled
据我的了解KdpBootedNodebug非调试为1 此值是调试模式得代表之一
KdPitchDebugger 非调试也为1
KdDebuggerEnabled 不用多说 调试为1 非调试为0
而loc_1404DA4B7是返回失败
那么不用多说了
KdpBootedNodebug = FALSE;
KdPitchDebugger = FALSE;
KdDebuggerEnabled = TRUE;
Win8/8.1:KdLocalDebugEnabled = TRUE;