来源:自学PHP网 时间:2015-04-17 18:32 作者: 阅读:次
[导读] from : http : //www.debugman.com/read.php?tid=614方法一: 替换win32k . sys在 2k3 的系统下ZwSetSystemInformation禁止了用户模式下加载驱动,只允许SMSS . exe加载win32k . sys。于是我们可以利用一下这个特点...
from : http : //www.debugman.com/read.php?tid=614 方法一: 替换win32k . sys 方法二: 利用第三方驱动程序的漏洞 方法三: 感染随系统启动的驱动程序 这里顺便再说说通过ZwSetSystemInformation其实也是可以建立Device的,由于ZwSetSystemInformation加载驱动时传给DriverEntry的DriverObject指针是错误的,因此我们不能用它来创建Device , 但我们可以自己分配一个DriverObject来创建,如下: NTSTATUS DriverObject = ExAllocatePoolWithTag ( NonPagedPool , sizeof ( DRIVER_OBJECT ), clAS ); // 分配DriverObject RtlZeroMemory ( DriverObject , sizeof ( DRIVER_OBJECT )); RtlInitUnicodeString ( & ntUnicodeString , NT_DEVICE_NAME ); ntStatus = IoCreateDevice ( if ( ! NT_SUCCESS ( ntStatus ) ) // 注意,需要我们自己来清除INITIALIZING标志,否则设置不能打开 DriverObject -> MajorFunction [ IRP_MJ_CREATE ] = CreateClose ; // 注意,必须要给IRP_MJ_CLEANUP分派一个DispathRoutine, 否则在设备关闭的时候就会挂 DriverObject -> MajorFunction [ IRP_MJ_DEVICE_CONTROL ] = DeviceControl ; // 注意,必须是Global符号连接, 否则程序退出后连接会消失 ntStatus = IoCreateSymbolicLink ( if ( ! NT_SUCCESS ( ntStatus ) ) return ntStatus ; 如果你高兴的话在分配空间的时候分配多一点,把OBJECT_HEADER也算上,这样可以避免某些软件扫描DriverObject的对象头时挂掉 . 相应的用CreateFile时打开时应像这样指定“\\ . \Global\SymbolLink” 还有哪些无耻的办法大家可以讨论一下 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com