-
-
win10 x64 构造中断门出现CPU错误
-
发表于:
2022-6-23 19:38
6605
-
本机实验环境为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探究
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)