内核编程:驱动之学习笔记

本文介绍了内核编程中的驱动程序挂靠技术,探讨如何挂靠到Ring3进程,以实现对目标进程内存的读写,从而可能导致程序崩溃。尽管存在软件保护机制,但在内核层加载驱动后,驱动会成为一个内核线程,通过切换cr3寄存器值可以实现进程挂靠。在实验过程中,通常使用虚拟机避免系统崩溃。
摘要由CSDN通过智能技术生成

驱动程序挂靠任意进程

最近学习了内核编程,虽然说学的比较浅,但是也不能有一丝丝的懈怠,生怕自己听不懂,又被班同学落(la)下……就如我的QQ个性签名一样,“有的时候,我们不停地跑啊跑,只是为了能追上那个被寄予厚望的自己……”

操作系统的内核是非常强大的,强大到令你吃惊,内存管理,进程管理,中断机制,保护机制……内核中没有进程,只有线程,都是属于系统进程下的线程,所以我们加载的驱动,都是跑在系统进程下的线程,我们想要干点“坏事”的话,挂靠到Ring3的程序是件不错的事,比如可以不停的读取被挂靠进程空间,随意写入内存,使之程序崩溃,这就达到我们的目的了,当然部分程序的健壮性还是很不错的,会有一些软件保护机制,我这里说的是除了壳以外的保护机制,反调试机制等等。我们在内核层加载后的驱动就会变成内核中的一个线程,此时这个线程的cr3还是系统的,cr3 = 0x00185000,这里说下cr3的具体含义,它是一个进程的首地址,一个进程下所有线程的cr3都是相同,线程共用系统给进程分配的4GB空间,高2GBRing3程序是无法访问的。所以简单点说,我们只需要将cr3的地址切换成被挂靠进程的cr3地址就可以了,就能实现进程挂靠。手动在Windbg下修改很容易导致系统崩溃蓝屏,所以我们一般在虚拟机里做这些实验就可以了。

这是Ring3被挂靠程序代码

int _tmain(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值