欢迎来到天天文库
浏览记录
ID:25656779
大小:109.00 KB
页数:21页
时间:2018-11-21
《试论windows2003 内核级进程隐藏和侦测技术》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、试论Windows2003内核级进程隐藏和侦测技术摘要:信息对抗是目前计算机发展的一个重要的方向,为了更好的防御,必须去深入的了解敌人进攻的招式。信息对抗促使信息技术飞速的发展。下面我选取了信息对抗技术的中一个很小一角关于ain,ain,是一样的。 extern"C"NTSTATUSDriverEntry(INPDRIVER_OBJECTDriverObject,INPUNICODE_STRINGRegistryPath) {...} DriverEntry的第一个参数是一个指针,指向一个刚被初始化的驱动程序对象,该对象就代表你的驱动程序,DriverE
2、ntry的第二个参数是设备服务键的键名。DriverEntry函数返回一个NTSTATUS值。NTSTATUS实际就是一个长整型,但你应该使用NTSTATUS定义该函数的返回值而不是LONG,这样代码的可读性会更好。大部分内核模式支持例程都返回NTSTATUS状态代码,你可以在DDK头文件NTSTATUS.H中找到NTSTATUS的代码列表。 DriverEntry的作用主要就是创建设备对象,建立设备对象的符号链接,设置好各个类型的回调函数等。 例如:extern"C"NTSTATUSDriverEntry(INPDRIVER_OBJECTDriverOb
3、ject,INPUNICODE_STRINGRegistryPath){DriverObject->DriverUnload=DriverUnload;<--1DriverObject->DriverExtension->AddDevice=AddDevice;DriverObject->DriverStartIo=StartIo;DriverObject->MajorFunction[IRP_MJ_PNP]=DispatchPnp;<--2DriverObject->MajorFunction[IRP_MJ_P
4、O中通过设置AddDevice回调函数来创建设备对象。在NT驱动中在DriverEntry例程中创建设备对象和符号链接。 例如: RtlInitUnicodeString(deviceNameUnicodeString,deviceNameBuffer);//初始化设备名字//创建设备ntStatus=IoCreateDevice(DriverObject,0,deviceNameUnicodeString,##DeviceId,0,FALSE,deviceObject);if(NT_SUCCESS(ntStatus)){RtlInitUnicodeStr
5、ing(deviceLinkUnicodeString,deviceLinkBuffer);//初始化符号链接名字//创建符号链接ntStatus=IoCreateSymbolicLink(deviceLinkUnicodeString,deviceNameUnicodeString);if(!NT_SUCCESS(ntStatus)){IoDeleteDevice(deviceObject);//如果创建符号链接失败,删除设备returnntStatus;}} 建立符号链接的作用就是暴露一个给应用程序的接口,应用程序可以通过CreateFileAPI打开链
6、接符号,得到一个语柄,和我们的驱动程序进行交互操作。 3.Unload例程 虽然各个驱动程序的Unload例程不尽相同,但是它大致执行下列工作: 释放属于驱动程序的任何硬件。 从ajorField域中来唯一的标识请求的类型。MajorField域是被I/O管理器用来索引驱动程序对象的MajorFunction表,这个表包含一个指向一个特殊I/O请求的派遣例程的功能指针,如果驱动程序不支持这个请求,MajorFunction表就会指向I/O管理器函数_IopInvalidDeviceRequest,该函数返回一个错误给原始的调用者。驱动程序的有责任提供所
7、有的驱动程序支持的派遣例程。所有的驱动程序必须支持IRP_MJ_CREATE功能代码,因为这个功能代码是用来响应J_CLOSE功能代码,因为它用来响应ydrvDispatch(INPDEVICE_OBJECTDeviceObject,INPIRPIrp){NTSTATUSstatus;PIO_STACK_LOCATIONirpSp;//得到当前IRP(I/O请求包)irpSp=IoGetCurrentIrpStackLocation(Irp);sation=0L;break;caseIRP_MJ_CLOSE:DbgPrint("IRP_MJ_CLOSE")
8、;Irp->IoStatus.S
此文档下载收益归作者所有