主頁 > 區塊鏈 > 為什么當我在IA32_LSTARMSR上為SYSCALL使用內核除錯器在Windows64位上設定斷點時會出現DoubleFault?(KVASCODE部分)

為什么當我在IA32_LSTARMSR上為SYSCALL使用內核除錯器在Windows64位上設定斷點時會出現DoubleFault?(KVASCODE部分)

2021-11-29 00:20:23 區塊鏈

TLDR:為什么您可以在 windows 內核 .text 部分而不是在 KVAS 部分設定斷點?

所以 afaik IA32_LSTAR 應該保存 KiSystemCall64/KiSystemCall64Shadow 的地址,所以就在對 ntdll 進行系統呼叫之前,我將其轉儲,并在使用 p onwindbg 跟蹤時在其上設定斷點(KiSystemCall64Shadow)我得到一個錯誤檢查(DOUBLE_FAULT),這是為什么?

我應該提到整個程序都在 VM 中,因此我可以對應用程式進行內核除錯

!analyze -v 的輸出

UNEXPECTED_KERNEL_MODE_TRAP (7f)
This means a trap occurred in kernel mode, and it's a trap of a kind
that the kernel isn't allowed to have/catch (bound trap) or that
is always instant death (double fault).  The first number in the
bugcheck params is the number of the trap (8 = double fault, etc)
Consult an Intel x86 family manual to learn more about what these
traps are. Here is a *portion* of those codes:
If kv shows a taskGate
        use .tss on the part before the colon, then kv.
Else if kv shows a trapframe
        use .trap on that value
Else
        .trap on the appropriate frame will show where the trap was taken
        (on x86, this will be the ebp that goes with the procedure KiTrap)
Endif
BUGCHECK_CODE:  7f

BUGCHECK_P1: 8

BUGCHECK_P2: ffff8c81d09dce50

BUGCHECK_P3: 66011c9020

BUGCHECK_P4: fffff80216a05000

BAD_STACK_POINTER:  ffff8c81d09dc558

PROCESS_NAME:  notepad.exe

SYMBOL_NAME:  nt!KiDoubleFaultAbort 2c3

MODULE_NAME: nt

IMAGE_NAME:  ntkrnlmp.exe

呼叫堆疊:

kd> k
 # Child-SP          RetAddr               Call Site
00 ffffbb81`a9bdc558 fffff803`80112b12     nt!DbgBreakPointWithStatus
01 ffffbb81`a9bdc560 fffff803`801120f6     nt!KiBugCheckDebugBreak 0x12
02 ffffbb81`a9bdc5c0 fffff803`7fff72b7     nt!KeBugCheck2 0x946
03 ffffbb81`a9bdccd0 fffff803`80009169     nt!KeBugCheckEx 0x107
04 ffffbb81`a9bdcd10 fffff803`80003f83     nt!KiBugCheckDispatch 0x69
05 ffffbb81`a9bdce50 fffff803`80005000     nt!KiDoubleFaultAbort 0x2c3
06 000000b9`51479010 fffff803`80005000     nt!KiPageFault
07 000000b9`51479040 fffff803`80005000     nt!KiPageFault
08 000000b9`51479070 fffff803`80005000     nt!KiPageFault
09 000000b9`514790a0 fffff803`80005000     nt!KiPageFault
0a 000000b9`514790d0 fffff803`80005000     nt!KiPageFault
0b 000000b9`51479100 fffff803`80005000     nt!KiPageFault
0c 000000b9`51479130 fffff803`80005000     nt!KiPageFault
0d 000000b9`51479160 fffff803`80005000     nt!KiPageFault
0e 000000b9`51479190 fffff803`80005000     nt!KiPageFault
0f 000000b9`514791c0 fffff803`80005000     nt!KiPageFault
10 000000b9`514791f0 fffff803`80005000     nt!KiPageFault
11 000000b9`51479220 fffff803`80005000     nt!KiPageFault
12 000000b9`51479250 fffff803`80005000     nt!KiPageFault
13 000000b9`51479280 fffff803`80005000     nt!KiPageFault
14 000000b9`514792b0 fffff803`80005000     nt!KiPageFault
15 000000b9`514792e0 fffff803`80005000     nt!KiPageFault
16 000000b9`51479310 fffff803`80005000     nt!KiPageFault
17 000000b9`51479340 fffff803`80005000     nt!KiPageFault
18 000000b9`51479370 fffff803`80005000     nt!KiPageFault
19 000000b9`514793a0 fffff803`80005000     nt!KiPageFault
1a 000000b9`514793d0 fffff803`80005000     nt!KiPageFault
1b 000000b9`51479400 fffff803`80005000     nt!KiPageFault
1c 000000b9`51479430 fffff803`80005000     nt!KiPageFault
1d 000000b9`51479460 fffff803`80005000     nt!KiPageFault
1e 000000b9`51479490 fffff803`80005000     nt!KiPageFault
1f 000000b9`514794c0 fffff803`80005000     nt!KiPageFault
20 000000b9`514794f0 fffff803`80005000     nt!KiPageFault
21 000000b9`51479520 fffff803`80005000     nt!KiPageFault
22 000000b9`51479550 fffff803`80005000     nt!KiPageFault
23 000000b9`51479580 fffff803`80005000     nt!KiPageFault
24 000000b9`514795b0 fffff803`80005000     nt!KiPageFault
25 000000b9`514795e0 fffff803`80005000     nt!KiPageFault
26 000000b9`51479610 fffff803`80005000     nt!KiPageFault
27 000000b9`51479640 fffff803`80005000     nt!KiPageFault
28 000000b9`51479670 fffff803`80005000     nt!KiPageFault
29 000000b9`514796a0 fffff803`80005000     nt!KiPageFault
2a 000000b9`514796d0 fffff803`80005000     nt!KiPageFault
2b 000000b9`51479700 fffff803`80005000     nt!KiPageFault
2c 000000b9`51479730 fffff803`80005000     nt!KiPageFault
2d 000000b9`51479760 fffff803`80005000     nt!KiPageFault
2e 000000b9`51479790 fffff803`80005000     nt!KiPageFault
2f 000000b9`514797c0 fffff803`80005000     nt!KiPageFault
30 000000b9`514797f0 fffff803`80005000     nt!KiPageFault
31 000000b9`51479820 fffff803`80005000     nt!KiPageFault
32 000000b9`51479850 fffff803`80005000     nt!KiPageFault
33 000000b9`51479880 fffff803`80005000     nt!KiPageFault
34 000000b9`514798b0 fffff803`80005000     nt!KiPageFault
35 000000b9`514798e0 fffff803`80005000     nt!KiPageFault
36 000000b9`51479910 fffff803`80005000     nt!KiPageFault
37 000000b9`51479940 fffff803`80005000     nt!KiPageFault
38 000000b9`51479970 fffff803`80005000     nt!KiPageFault
39 000000b9`514799a0 fffff803`80005000     nt!KiPageFault
3a 000000b9`514799d0 fffff803`80005000     nt!KiPageFault
3b 000000b9`51479a00 fffff803`80005000     nt!KiPageFault
3c 000000b9`51479a30 fffff803`80005000     nt!KiPageFault
3d 000000b9`51479a60 fffff803`80005000     nt!KiPageFault
3e 000000b9`51479a90 fffff803`80005000     nt!KiPageFault
3f 000000b9`51479ac0 fffff803`80005000     nt!KiPageFault
40 000000b9`51479af0 fffff803`80005000     nt!KiPageFault
41 000000b9`51479b20 fffff803`80005000     nt!KiPageFault
42 000000b9`51479b50 fffff803`80005000     nt!KiPageFault
43 000000b9`51479b80 fffff803`80005000     nt!KiPageFault
44 000000b9`51479bb0 fffff803`80005000     nt!KiPageFault
45 000000b9`51479be0 fffff803`80005000     nt!KiPageFault
46 000000b9`51479c10 fffff803`80005000     nt!KiPageFault
47 000000b9`51479c40 fffff803`80005000     nt!KiPageFault
48 000000b9`51479c70 fffff803`80005000     nt!KiPageFault
49 000000b9`51479ca0 fffff803`80005000     nt!KiPageFault
4a 000000b9`51479cd0 fffff803`80005000     nt!KiPageFault
4b 000000b9`51479d00 fffff803`80005000     nt!KiPageFault
4c 000000b9`51479d30 fffff803`80005000     nt!KiPageFault
4d 000000b9`51479d60 fffff803`80005000     nt!KiPageFault
4e 000000b9`51479d90 fffff803`80005000     nt!KiPageFault
4f 000000b9`51479dc0 fffff803`80005000     nt!KiPageFault
50 000000b9`51479df0 fffff803`80005000     nt!KiPageFault
51 000000b9`51479e20 fffff803`80005000     nt!KiPageFault
52 000000b9`51479e50 fffff803`80005000     nt!KiPageFault
53 000000b9`51479e80 fffff803`80005000     nt!KiPageFault
54 000000b9`51479eb0 fffff803`80005000     nt!KiPageFault
55 000000b9`51479ee0 fffff803`80005000     nt!KiPageFault
56 000000b9`51479f10 fffff803`80005000     nt!KiPageFault
57 000000b9`51479f40 fffff803`80005000     nt!KiPageFault
58 000000b9`51479f70 fffff803`80005000     nt!KiPageFault
59 000000b9`51479fa0 fffff803`80005000     nt!KiPageFault
5a 000000b9`51479fd0 fffff803`80005000     nt!KiPageFault
5b 000000b9`5147a000 fffff803`80005000     nt!KiPageFault
5c 000000b9`5147a030 fffff803`80005000     nt!KiPageFault
5d 000000b9`5147a060 fffff803`80005000     nt!KiPageFault
5e 000000b9`5147a090 fffff803`80005000     nt!KiPageFault
5f 000000b9`5147a0c0 fffff803`80005000     nt!KiPageFault
60 000000b9`5147a0f0 fffff803`80005000     nt!KiPageFault
61 000000b9`5147a120 fffff803`80005000     nt!KiPageFault
62 000000b9`5147a150 fffff803`80005000     nt!KiPageFault
63 000000b9`5147a180 fffff803`80005000     nt!KiPageFault
64 000000b9`5147a1b0 fffff803`80005000     nt!KiPageFault
65 000000b9`5147a1e0 fffff803`80005000     nt!KiPageFault
66 000000b9`5147a210 fffff803`80005000     nt!KiPageFault
67 000000b9`5147a240 fffff803`80005000     nt!KiPageFault
68 000000b9`5147a270 fffff803`80005000     nt!KiPageFault
69 000000b9`5147a2a0 fffff803`80005000     nt!KiPageFault
6a 000000b9`5147a2d0 fffff803`80005000     nt!KiPageFault
6b 000000b9`5147a300 fffff803`80005000     nt!KiPageFault
6c 000000b9`5147a330 fffff803`80005000     nt!KiPageFault
6d 000000b9`5147a360 fffff803`80005000     nt!KiPageFault
6e 000000b9`5147a390 fffff803`80005000     nt!KiPageFault
6f 000000b9`5147a3c0 fffff803`80005000     nt!KiPageFault
70 000000b9`5147a3f0 fffff803`80005000     nt!KiPageFault
71 000000b9`5147a420 fffff803`80005000     nt!KiPageFault
72 000000b9`5147a450 fffff803`80005000     nt!KiPageFault
73 000000b9`5147a480 fffff803`80005000     nt!KiPageFault
74 000000b9`5147a4b0 fffff803`80005000     nt!KiPageFault
75 000000b9`5147a4e0 fffff803`80005000     nt!KiPageFault
76 000000b9`5147a510 fffff803`80005000     nt!KiPageFault
77 000000b9`5147a540 fffff803`80005000     nt!KiPageFault
78 000000b9`5147a570 fffff803`80005000     nt!KiPageFault
79 000000b9`5147a5a0 fffff803`80005000     nt!KiPageFault
7a 000000b9`5147a5d0 fffff803`80005000     nt!KiPageFault
7b 000000b9`5147a600 fffff803`80005000     nt!KiPageFault
7c 000000b9`5147a630 fffff803`80005000     nt!KiPageFault
7d 000000b9`5147a660 fffff803`80005000     nt!KiPageFault
7e 000000b9`5147a690 fffff803`80005000     nt!KiPageFault
7f 000000b9`5147a6c0 fffff803`80005000     nt!KiPageFault
80 000000b9`5147a6f0 fffff803`80005000     nt!KiPageFault
81 000000b9`5147a720 fffff803`80005000     nt!KiPageFault
82 000000b9`5147a750 fffff803`80005000     nt!KiPageFault
83 000000b9`5147a780 fffff803`80005000     nt!KiPageFault
84 000000b9`5147a7b0 fffff803`80005000     nt!KiPageFault
85 000000b9`5147a7e0 fffff803`80005000     nt!KiPageFault
86 000000b9`5147a810 fffff803`80005000     nt!KiPageFault
87 000000b9`5147a840 fffff803`80005000     nt!KiPageFault
88 000000b9`5147a870 fffff803`80005000     nt!KiPageFault
89 000000b9`5147a8a0 fffff803`80005000     nt!KiPageFault
8a 000000b9`5147a8d0 fffff803`80005000     nt!KiPageFault
8b 000000b9`5147a900 fffff803`80005000     nt!KiPageFault
8c 000000b9`5147a930 fffff803`80005000     nt!KiPageFault
8d 000000b9`5147a960 fffff803`80005000     nt!KiPageFault
8e 000000b9`5147a990 fffff803`80005000     nt!KiPageFault
8f 000000b9`5147a9c0 fffff803`80005000     nt!KiPageFault
90 000000b9`5147a9f0 fffff803`80005000     nt!KiPageFault
91 000000b9`5147aa20 fffff803`80005000     nt!KiPageFault
92 000000b9`5147aa50 fffff803`80005000     nt!KiPageFault
93 000000b9`5147aa80 fffff803`80005000     nt!KiPageFault
94 000000b9`5147aab0 fffff803`80005000     nt!KiPageFault
95 000000b9`5147aae0 fffff803`80005000     nt!KiPageFault
96 000000b9`5147ab10 fffff803`80005000     nt!KiPageFault
97 000000b9`5147ab40 fffff803`80005000     nt!KiPageFault
98 000000b9`5147ab70 fffff803`80005000     nt!KiPageFault
99 000000b9`5147aba0 fffff803`80005000     nt!KiPageFault
9a 000000b9`5147abd0 fffff803`80005000     nt!KiPageFault
9b 000000b9`5147ac00 fffff803`80005000     nt!KiPageFault
9c 000000b9`5147ac30 fffff803`80005000     nt!KiPageFault
9d 000000b9`5147ac60 fffff803`80005000     nt!KiPageFault
9e 000000b9`5147ac90 fffff803`80005000     nt!KiPageFault
9f 000000b9`5147acc0 fffff803`80005000     nt!KiPageFault
a0 000000b9`5147acf0 fffff803`80005000     nt!KiPageFault
a1 000000b9`5147ad20 fffff803`80005000     nt!KiPageFault
a2 000000b9`5147ad50 fffff803`80005000     nt!KiPageFault
a3 000000b9`5147ad80 fffff803`80005000     nt!KiPageFault
a4 000000b9`5147adb0 fffff803`80005000     nt!KiPageFault
a5 000000b9`5147ade0 fffff803`80005000     nt!KiPageFault
a6 000000b9`5147ae10 fffff803`80005000     nt!KiPageFault
a7 000000b9`5147ae40 fffff803`80005000     nt!KiPageFault
a8 000000b9`5147ae70 fffff803`80005000     nt!KiPageFault
a9 000000b9`5147aea0 fffff803`80005000     nt!KiPageFault
aa 000000b9`5147aed0 fffff803`80005000     nt!KiPageFault
ab 000000b9`5147af00 fffff803`80005000     nt!KiPageFault
ac 000000b9`5147af30 fffff803`80005000     nt!KiPageFault
ad 000000b9`5147af60 fffff803`80005000     nt!KiPageFault
ae 000000b9`5147af90 fffff803`80005000     nt!KiPageFault
af 000000b9`5147afc0 fffff803`80005000     nt!KiPageFault
b0 000000b9`5147aff0 fffff803`80005000     nt!KiPageFault
b1 000000b9`5147b020 fffff803`80005000     nt!KiPageFault
b2 000000b9`5147b050 fffff803`80005000     nt!KiPageFault
b3 000000b9`5147b080 fffff803`80005000     nt!KiPageFault
b4 000000b9`5147b0b0 fffff803`80005000     nt!KiPageFault
b5 000000b9`5147b0e0 fffff803`80005000     nt!KiPageFault
b6 000000b9`5147b110 fffff803`80005000     nt!KiPageFault
b7 000000b9`5147b140 fffff803`80005000     nt!KiPageFault
b8 000000b9`5147b170 fffff803`80005000     nt!KiPageFault
b9 000000b9`5147b1a0 fffff803`80005000     nt!KiPageFault
ba 000000b9`5147b1d0 fffff803`80005000     nt!KiPageFault
bb 000000b9`5147b200 fffff803`80005000     nt!KiPageFault
bc 000000b9`5147b230 fffff803`80005000     nt!KiPageFault
bd 000000b9`5147b260 fffff803`80005000     nt!KiPageFault
be 000000b9`5147b290 fffff803`80005000     nt!KiPageFault
bf 000000b9`5147b2c0 fffff803`80005000     nt!KiPageFault
c0 000000b9`5147b2f0 fffff803`80005000     nt!KiPageFault
c1 000000b9`5147b320 fffff803`80005000     nt!KiPageFault
c2 000000b9`5147b350 fffff803`80005000     nt!KiPageFault
c3 000000b9`5147b380 fffff803`80005000     nt!KiPageFault
c4 000000b9`5147b3b0 fffff803`80005000     nt!KiPageFault
c5 000000b9`5147b3e0 fffff803`80005000     nt!KiPageFault
c6 000000b9`5147b410 fffff803`80005000     nt!KiPageFault
c7 000000b9`5147b440 fffff803`80005000     nt!KiPageFault
c8 000000b9`5147b470 fffff803`80005000     nt!KiPageFault
c9 000000b9`5147b4a0 fffff803`80005000     nt!KiPageFault
ca 000000b9`5147b4d0 fffff803`80005000     nt!KiPageFault
cb 000000b9`5147b500 fffff803`80005000     nt!KiPageFault
cc 000000b9`5147b530 fffff803`80005000     nt!KiPageFault
cd 000000b9`5147b560 fffff803`80005000     nt!KiPageFault
ce 000000b9`5147b590 fffff803`80005000     nt!KiPageFault
cf 000000b9`5147b5c0 fffff803`80005000     nt!KiPageFault
d0 000000b9`5147b5f0 fffff803`80005000     nt!KiPageFault
d1 000000b9`5147b620 fffff803`80005000     nt!KiPageFault
d2 000000b9`5147b650 fffff803`80005000     nt!KiPageFault
d3 000000b9`5147b680 fffff803`80005000     nt!KiPageFault
d4 000000b9`5147b6b0 fffff803`80005000     nt!KiPageFault
d5 000000b9`5147b6e0 fffff803`80005000     nt!KiPageFault
d6 000000b9`5147b710 fffff803`80005000     nt!KiPageFault
d7 000000b9`5147b740 fffff803`80005000     nt!KiPageFault
d8 000000b9`5147b770 fffff803`80005000     nt!KiPageFault
d9 000000b9`5147b7a0 fffff803`80005000     nt!KiPageFault
da 000000b9`5147b7d0 fffff803`80005000     nt!KiPageFault
db 000000b9`5147b800 fffff803`80005000     nt!KiPageFault
dc 000000b9`5147b830 fffff803`80005000     nt!KiPageFault
dd 000000b9`5147b860 fffff803`80005000     nt!KiPageFault
de 000000b9`5147b890 fffff803`80005000     nt!KiPageFault
df 000000b9`5147b8c0 fffff803`80005000     nt!KiPageFault
e0 000000b9`5147b8f0 fffff803`80005000     nt!KiPageFault
e1 000000b9`5147b920 fffff803`80005000     nt!KiPageFault
e2 000000b9`5147b950 fffff803`80005000     nt!KiPageFault
e3 000000b9`5147b980 fffff803`80005000     nt!KiPageFault
e4 000000b9`5147b9b0 fffff803`80005000     nt!KiPageFault
e5 000000b9`5147b9e0 fffff803`80005000     nt!KiPageFault
e6 000000b9`5147ba10 fffff803`80005000     nt!KiPageFault
e7 000000b9`5147ba40 fffff803`80005000     nt!KiPageFault
e8 000000b9`5147ba70 fffff803`80005000     nt!KiPageFault
e9 000000b9`5147baa0 fffff803`80005000     nt!KiPageFault
ea 000000b9`5147bad0 fffff803`80005000     nt!KiPageFault
eb 000000b9`5147bb00 fffff803`80005000     nt!KiPageFault
ec 000000b9`5147bb30 fffff803`80005000     nt!KiPageFault
ed 000000b9`5147bb60 fffff803`80005000     nt!KiPageFault
ee 000000b9`5147bb90 fffff803`80005000     nt!KiPageFault
ef 000000b9`5147bbc0 fffff803`80005000     nt!KiPageFault
f0 000000b9`5147bbf0 fffff803`80005000     nt!KiPageFault
f1 000000b9`5147bc20 fffff803`80005000     nt!KiPageFault
f2 000000b9`5147bc50 fffff803`80005000     nt!KiPageFault
f3 000000b9`5147bc80 fffff803`80005000     nt!KiPageFault
f4 000000b9`5147bcb0 fffff803`80005000     nt!KiPageFault
f5 000000b9`5147bce0 fffff803`80005000     nt!KiPageFault
f6 000000b9`5147bd10 fffff803`80005000     nt!KiPageFault
f7 000000b9`5147bd40 fffff803`80005000     nt!KiPageFault
f8 000000b9`5147bd70 fffff803`80005000     nt!KiPageFault
f9 000000b9`5147bda0 fffff803`80005000     nt!KiPageFault
fa 000000b9`5147bdd0 fffff803`80005000     nt!KiPageFault
fb 000000b9`5147be00 fffff803`80005000     nt!KiPageFault
fc 000000b9`5147be30 fffff803`80005000     nt!KiPageFault
fd 000000b9`5147be60 fffff803`80005000     nt!KiPageFault
fe 000000b9`5147be90 fffff803`80005000     nt!KiPageFault
ff 000000b9`5147bec0 fffff803`80005000     nt!KiPageFault

uj5u.com熱心網友回復:

內核模式中斷條目檢查哪種模式是中斷 - 用戶或內核,通過檢查CS堆疊上的最低位( CPL) 并SWAPGS僅在 iterrupt 來自用戶模式的情況下執行指令。否則在 GS 中假設已經正確的值 - 在用戶模式中GS指向TEB并且在內核模式中指向KPCR的例子

  KiDebugServiceTrapShadow
    test        byte ptr [rsp 8],1 ;; if (!(Cs & 1) )
    je          @@kernel_mode
    swapgs                         ;; only in case Cs from user mode !
    lfence
    .... ; some code
    jmp         KiDebugServiceTrap(FFFFF80527807780)
 @@kernel_mode:
    lfence
    jmp         KiDebugServiceTrap(FFFFF80527807780)

  KiDebugServiceTrap
    inc         qword ptr [rsp]
    cmp         word ptr [rsp 8],23h ;; Cs==23 ? this mean 32 bit code 
    jne         @@64bit
    and         dword ptr [rsp 4],0  ;; zero high 32 bit of Rip for 32 bit code
 @@64bit:
    sub         rsp,8
    push        rbp
    sub         rsp,158h
    lea         rbp,[rsp 80h]
    mov         byte ptr [rbp-55h],1
    mov         qword ptr [rbp-50h],rax
    mov         qword ptr [rbp-48h],rcx
    mov         qword ptr [rbp-40h],rdx
    mov         qword ptr [rbp-38h],r8
    mov         qword ptr [rbp-30h],r9
    mov         qword ptr [rbp-28h],r10
    mov         qword ptr [rbp-20h],r11
    test        byte ptr [rbp 0F0h],1  ;; if (Cs & 1) // (f0 80)-(158 8 8)==8 - Cs here
    jne         @@user_mode
    lfence
    test        byte ptr gs:[278h],1 ;; assume that gs -> KPCR (KPCR.BpbCpuIdle checked)

    jne         @@1
    lfence
    jmp         @@0
 @@1:
    movzx       eax,byte ptr gs:[27Ah] ;; KPCR.BpbCurrentSpecCtrl
    mov         ecx,48h
    xor         edx,edx
    wrmsr
    jmp         @@0
 @@user_mode:
    test        byte ptr [KiKvaShadow],1
    jne         @@x
    swapgs ;; !!!
 @@x:
    lfence
    mov         r10,qword ptr gs:[CurrentThread]
    mov         rcx,qword ptr gs:[CurrentThread]
    ....

所以錯誤的根源 -已經從內核模式中斷,但GS值仍然來自用戶模式,在這種情況下內核不執行 SWAPGS 而是使用當前的 GS 值(這對內核是錯誤的)并指向錯誤的結構 - 結果和頁面錯誤并KiPageFault執行

再次 -swapgs僅在故障來自用戶模式的情況下才執行

  KiPageFault
    push        rbp
    sub         rsp,158h
    lea         rbp,[rsp 80h]
    mov         byte ptr [rbp-55h],1
    mov         qword ptr [rbp-50h],rax
    mov         qword ptr [rbp-48h],rcx
    mov         qword ptr [rbp-40h],rdx
    mov         qword ptr [rbp-38h],r8
    mov         qword ptr [rbp-30h],r9
    mov         qword ptr [rbp-28h],r10
    mov         qword ptr [rbp-20h],r11
    test        byte ptr [rbp 0F0h],1     ;; if (Cs & 1) 
    jne         @@user_mode
    lfence
    test        byte ptr gs:[278h],1
    jne         FFFFF80527804B4F v
    lfence
    jmp         @@0
 @@1
    movzx       eax,byte ptr gs:[27Ah]
    mov         ecx,48h
    xor         edx,edx
    wrmsr
    jmp         @@0
 @@user_mode:
    test        byte ptr [KiKvaShadow],1
    jne         @@x
    swapgs                                ;; !! only in case fault from user mode
    lfence
    mov         r10,qword ptr gs:[CurrentThread]

結果是 reqursive 錯誤(訪問了錯誤的記憶體)等等 - 直到堆疊空間結束和最終雙重錯誤 - 請注意 Child-SP - 從用戶模式!在所有 nt!KiPageFault - 這是因為syscall沒有將堆疊切換到內核并且需要手動執行此操作,并且中斷也不切換堆疊 - 因為它已經處于內核模式。并且僅當當前堆疊中沒有空間時 - 是雙重錯誤和堆疊切換:

05 ffffbb81`a9bdce50 fffff803`80005000     nt!KiDoubleFaultAbort 0x2c3
06 000000b9`51479010 fffff803`80005000     nt!KiPageFault

b951479010- 這仍然是用戶模式堆疊值(已b951479000分配堆疊區域明顯結尾)并且ffffbb81a9bdce50已經內核模式堆疊。

最后編碼 KiSystemCall64

  KiSystemCall64
    swapgs
    mov         qword ptr gs:[UserRsp],rsp
    mov         rsp,qword ptr gs:[RspBase]
    push        2Bh ;; user mode Ss
    push        qword ptr gs:[UserRsp]
    push        r11 ;; rflags
    push        33h ;; user mode Cs for 64bit code
    push        rcx ;; rip from user mode
    mov         rcx,r10
    sub         rsp,8 
    push        rbp
    sub         rsp,158h
    lea         rbp,[rsp 80h]

所以第一個位元組之前swapgs和切換到內核堆疊(mov rsp,qword ptr gs:[RspBase])不是 bp 設定斷點的有效位置,只有在此指令之后!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/368485.html

標籤:C 视窗 登录 x86-64 窗口内核

上一篇:如何在c 中輪詢com埠

下一篇:選擇TABLOCKX然后MERGE與MERGEwithTABLOCKX

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more