试论Windows2003 内核级进程隐藏和侦测技术.docVIP

  • 3
  • 0
  • 约1.06万字
  • 约 11页
  • 2017-09-21 发布于广东
  • 举报

试论Windows2003 内核级进程隐藏和侦测技术.doc

试论Windows2003 内核级进程隐藏和侦测技术.doc

  试论Windows2003 内核级进程隐藏和侦测技术 摘 要:信息对抗是目前计算机发展的一个重要的方向,为了更好的防御,必须去深入的了解敌人进攻的招式。信息对抗促使信息技术飞速的发展。下面我选取了信息对抗技术的中一个很小一角关于ain,ain,是一样的。   extern C NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)   {...}   DriverEntry的第一个参数是一个指针,指向一个刚被初始化的驱动程序对象,该对象就代表你的驱动程序,DriverEntry的第二个参数是设备服务键的键名。DriverEntry函数返回一个NTSTATUS值。NTSTATUS实际就是一个长整型,但你应该使用NTSTATUS定义该函数的返回值而不是LONG,这样代码的可读性会更好。大部分内核模式支持例程都返回NTSTATUS状态代码,你可以在DDK头文件NTSTATUS.H中找到NTSTATUS的代码列表。   DriverEntry的作用主要就是创建设备对象,建立设备对象的符号链接,设置好各个类型的回调函数等。   例如: extern C NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { DriverObject-gt;DriverUnload = DriverUnload; lt;--1 DriverObject-gt;DriverExtension-gt;AddDevice = AddDevice; DriverObject-gt;DriverStartIo = StartIo; DriverObject-gt;MajorFunction[IRP_MJ_PNP] = DispatchPnp; lt;--2 DriverObject-gt;MajorFunction[IRP_MJ_PO中通过设置AddDevice回调函数来创建设备对象。在NT驱动中在DriverEntry例程中创建设备对象和符号链接。   例如:   RtlInitUnicodeString (deviceNameUnicodeString, deviceNameBuffer); //初始化设备名字 //创建设备 ntStatus = IoCreateDevice (DriverObject, 0, deviceNameUnicodeString, ##DeviceId, 0, FALSE, deviceObject ); if ( NT_SUCCESS ( ntStatus ) ) { RtlInitUnicodeString (deviceLinkUnicodeString, deviceLinkBuffer); //初始化符号链接名字 //创建符号链接 ntStatus = IoCreateSymbolicLink (deviceLinkUnicodeString, deviceNameUnicodeString); if ( !NT_SUCCESS ( ntStatus ) ) { IoDeleteDevice (deviceObject); //如果创建符号链接失败,删除设备 return ntStatus; } }   建立符号链接的作用就是暴露一个给应用程序的接口,应用程序可以通过CreateFile API打开链接符号,得到一个语柄,和我们的驱动程序进行交互操作。    3.Unload例程   虽然各个驱动程序的Unload例程不尽相同,但是它大致执行下列工作:   释放属于驱动程序的任何硬件。   从ajorField域中来唯一的标识请求的类型。MajorField域是被I/O管理器用来索引驱动程序对象的MajorFunction表,这个表包含一个指向一个特殊I/O请求的派遣例程的功能指针,如果驱动程序不支持这个请求,MajorFunction表就会指向I/O管理器函数_IopInvalidDeviceRequest,该函数返回一个错误给原始的调用者。驱动程序的有责任提供所有的驱动程序支持的派遣例程。所有的驱动程序必须支持IRP_MJ_CREATE功能代码,因为这个功能代码是用来响应J_CLOSE功能代码,因为它用来响应ydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { NTSTATUS status; PIO_S

文档评论(0)

1亿VIP精品文档

相关文档