Windows内核之中断门提权

本文介绍了Windows内核中中断门的概念及其在三环程序开发中的应用。详细解析了中断门的结构,包括高32位和低32位的组成,以及如何构造中断门跳转到目标函数。通过示例代码展示了如何创建新的段描述符,并通过调用自定义的中断门,实现在内核中执行任意代码,从而达到权限提升的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows内核之中断门提权

前言

    在平时三环程序下的开发中,都会用到断点,而这个断点其实就是与中断门有关联的。

1.中断门介绍
在三环程序开发中,编译器进行断点之后反汇编可以查看到,断点反汇编的形式就是 int 3。如下图,在OD中查看,这就是一个断点。

int 0x3; 其实就是查找的IDT表中,从0开始,索引为3的位置,继续看下图,通过windbg查看到int 3的段描述符。

INT段描述符对应的分解图如下:

构造中断门的高32位中的低16位的值是固定的,也就是ee00
而offset就是要跳转的函数地址(高32位中高16位和低32位中低16位)
低32位中,高16位是我们的段选择子偏移(index),查询的是GDT表

2.中断门的实现
接下来找一段空的位置,在把我们新构造的段描述符放进去。
1.构建段描述符
我们需要的两个条件,第一个是函数地址,第二个是段选择子 (index),这里我新建了一个__declspec的空函数,然后取地址即可
40100a。

第二个段选择子,我们用0008即可,就是GDT表中偏移为8的地方。

GDT表
kd> dq 80b99000
80b99000 0000000000000000 00cf9b000000ffff
80b99010 00cf93000000ffff 00cffb000000ffff
80b99020 00cff3000000ffff 80008b1e400020ab
80b9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值