-
-
win10 x64 构造中断门出现CPU错误
-
发表于:
2022-6-23 19:38
6988
-
本机实验环境为win10 x64,在做x64中断门提权实验时出现CPU错误。
本次实验分为两部分,第一部分为中断门非提权,第二部分为中断门提权。
测试代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ; asm代码部分
extern qwBuffer: qword
.code
ReadKernelMemory proc
mov rax, [0fffff8077806f030h] //idt表型
mov [qwBuffer], rax
iretq
ReadKernelMemory endp
InterruptGate proc
int 0fh
ret
InterruptGate endp
end
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // C语言部分
EXTERN_C void InterruptGate();
EXTERN_C void ReadKernelMemory(__int64* qwBuffer);
__int64 qwBuffer;
int main()
{
printf("func address: %p\n", ReadKernelMemory);
system("pause");
InterruptGate();
printf("Done! %p\n", qwBuffer);
system("pause");
return 0;
}
|
中断门非提权
在ReadKernelMemory函数中执行指令mov rax,0ffffffff12345678h,构造中断门eq 0fffff8077806f0f0h 04000ee0000331000h,eq 0fffff8077806f0f0h 1,程序可正常执行。 

中断门提权
在ReadKernelMemory函数中执行指令mov rax,[0ffffffff12345678h],中断门构造如下:

即使是在修改Cr4.SMAP/Cr4.SMEP的情况下,仍然会出现CPU错误!我并未找到原因,希望大牛解惑!

参考资料:B站周壑——x64探究
[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!