nt!ExRemoveHeadNBQueue 函数分析
第一部分:
1: kd> p
nt!MmMapLockedPagesSpecifyCache+0x20f:
80a98491 e8ecb00500 call nt!ExRemoveHeadNBQueue (80af3582)
1: kd> t
nt!ExRemoveHeadNBQueue:
80af3582 55 push ebp
1: kd> dv
Header = 0x89be5008
Value = 0xf705f85c
Next = union _NBQUEUE_POINTER
HeadNode = 0x89be5008
Head = union _NBQUEUE_POINTER
Tail = union _NBQUEUE_POINTER
Insert = union _NBQUEUE_POINTER
1: kd> dt NBQUEUE_HEADER 0x89be5008
Symbol NBQUEUE_HEADER not found.
1: kd> dt _NBQUEUE_HEADER 0x89be5008
nt!_NBQUEUE_HEADER
+0x000 Head : _NBQUEUE_POINTER
+0x008 Tail : _NBQUEUE_POINTER
+0x010 SlistHead : 0x80b236b8 _SLIST_HEADER
1: kd> dx -id 0,0,899a2278 -r1 (*((ntkrnlmp!_NBQUEUE_POINTER *)0x89be5008))
(*((ntkrnlmp!_NBQUEUE_POINTER *)0x89be5008)) [Type: _NBQUEUE_POINTER]
[+0x000] Count : 484491 [Type: long]
[+0x004] Node : -1984004336 [Type: long]
[+0x000] Data : -8521233738241710965 [Type: __int64]
1: kd> dx -id 0,0,899a2278 -r1 (*((ntkrnlmp!_NBQUEUE_POINTER *)0x89be5010))
(*((ntkrnlmp!_NBQUEUE_POINTER *)0x89be5010)) [Type: _NBQUEUE_POINTER]
[+0x000] Count : 484598 [Type: long]
[+0x004] Node : -1984003184 [Type: long]
[+0x000] Data : -8521228790439385866 [Type: __int64]
1: kd> dd 0x89be5008
89be5008 0007648b 89be7f10 000764f6 89be8390
89be5018 80b236b8 00000000 00020004 00000000
89be5028 899a1289 89be5d81 0a080002 64546553
89be5038 899a28e8 80b1a110 8999e290 00000000
89be5048 00000000 00000000 00000000 00000000
89be5058 00000000 00000000 00000000 00000000
89be5068 00000000 00000000 0a0e0008 644c6d4d
89be5078 899c8008 89be50e8 ffffffff ffffffff
1: kd> dd 89be7f10
89be7f10 0007648c 89be8350 c03dea20 00001325
89be7f20 000764e5 89be8100 c03dea74 0000136b
89be7f30 00076494 89be7fe0 c03dea24 00001331
89be7f40 000764ac 89be7ef0 c03deafc 0000133e
89be7f50 0000002a 89be7db0 c02eade4 0000134f
89be7f60 000764bf 89be8940 c03de9f0 0000134a
89be7f70 000764aa 89be83a0 c03de970 0000133e
89be7f80 89be8240 89be81a0 c03de9d8 00001325
1: kd> dd 89be8350
89be8350 0007648d 89be7ec0 c03de9f8 00001325
89be8360 89be82f0 89be8050 c03dea00 00001325
89be8370 000764da 89be7d40 c03deae0 00001369
89be8380 000764c9 89be8310 c03dea54 00001355
89be8390 000764f6 00000000 c03dea50 0000136d
89be83a0 000764ab 89be7f40 c03de960 0000133e
89be83b0 000764dc 89be82b0 c03dea84 00001369
89be83c0 000764b3 89be80f0 c03dea80 0000133e
第二部分:
1: kd> x nt!MiSystemPteNBHead
80b23680 nt!MiSystemPteNBHead = void *[5]
1: kd> dx -r1 (*((ntkrnlmp!void * (*)[5])0x80b23680))
(*((ntkrnlmp!void * (*)[5])0x80b23680)) [Type: void * [5]]
[0] : 0x89be5008 [Type: void *]
[1] : 0x89be5fe8 [Type: void *]
[2] : 0x89be5fc8 [Type: void *]
[3] : 0x89be5fa8 [Type: void *]
[4] : 0x89be5f88 [Type: void *]
1: kd> dd 0x89be5008
89be5008 0007648c 89be8350 000764f6 89be8390
89be5018 80b236b8 00000000 00020004 00000000
89be5028 899a1289 89be5d81 0a080002 64546553
89be5038 899a28e8 80b1a110 8999e290 00000000
89be5048 00000000 00000000 00000000 00000000
89be5058 00000000 00000000 00000000 00000000
89be5068 00000000 00000000 0a0e0008 644c6d4d
89be5078 899c8008 89be50e8 ffffffff ffffffff
1: kd> dd 89be8350
89be8350 0007648d 89be7ec0 c03de9f8 00001325
89be8360 89be82f0 89be8050 c03dea00 00001325
89be8370 000764da 89be7d40 c03deae0 00001369
89be8380 000764c9 89be8310 c03dea54 00001355
89be8390 000764f6 00000000 c03dea50 0000136d
89be83a0 000764ab 89be7f40 c03de960 0000133e
89be83b0 000764dc 89be82b0 c03dea84 00001369
89be83c0 000764b3 89be80f0 c03dea80 0000133e
1: kd> dd 89be7ec0
89be7ec0 0007648e 89be7ff0 c03de96c 00001325
89be7ed0 89be7e80 89be7ec0 c03de9a8 00000167
89be7ee0 0000002d 89be88f0 c02ead24 0000134f
89be7ef0 000764ad 89be8210 c03dea48 0000133e
89be7f00 000764e2 89be7e10 c03deacc 00001369
89be7f10 89be8120 89be8350 c03dea20 00001325
89be7f20 000764e5 89be8100 c03dea74 0000136b
89be7f30 00076494 89be7fe0 c03dea24 00001331
第三部分:
1: kd> dd c03dea20
c03dea20 7b19b963 00000000 00000000 00000000 7b19b000已经刚刚被使用了!!!
1: kd> dd 0x89be7f10
89be7f10 89be8120 89be8350 c03dea20 00001325