如何识别移动硬盘(Ring0)

2011-5-1 Nie.Meining Coding

好久没写东西了,贴点代码,庆祝五一。

 

Ring 0下的方法:

在Ring 0下,通过DiskDeviceObject的名字在一定概率上能判断该DiskDeviceObject对应的卷设备是否是USB设备。即名称为HardDiskVolumeXXX的DiskDeviceObject通常是本地硬盘。不过这个方法其实也很不靠谱,尤其是Win7下,插个U盘都是HardDiskVolumeXXX。

其实最好的方法同样是查询总线类型。贴代码:

 

BOOLEAN IsUsbDriver(IN PDEVICE_OBJECT pDeviceObject)

阅读全文>>

评论(0) 浏览(13418)

如何识别移动硬盘(Ring3)

2011-5-1 Nie.Meining Coding

好久没写东西了,贴点代码,庆祝五一。

 

Ring 3下的方法:

童鞋们应该已经发现了,GetDriveType函数只能识别出U盘,无法识别移动硬盘。移动硬盘和本地硬盘将返回相同的类型DRIVE_FIXED。MSDN上的建议是用一个蛋疼无比的函数SetupDiGetDeviceRegistryProperty来识别USB设备。

其实有个更方便的方法,可以通过DeviceIoControl函数查询总线类型来识别USB设备。贴代码:

BOOL IsUsbDriver(TCHAR tchDrvName)

阅读全文>>

评论(0) 浏览(13977)

文件过滤驱动中各个对象之间的关系

2010-12-31 Nie.Meining Coding

元旦来临之际,整理了一下硬盘,顺便把自己以前写的代码又翻出来看了看。无意中找到了两年前自己写的第一个驱动,一个文件过滤驱动。
当时写的时候主要是按照sFilter的框架来填充,但是对于sFilter的整个过滤驱动attach流程,以及其中的什么文件系统驱动、文件系统设备、卷设备、磁盘设备,包括什么VPB、卷影设备等等众多对象之间的关系搞得并不是很清楚。今天仔细理了理,画了副图,留给有需要的人:

 点击查看原图

阅读全文>>

评论(0) 浏览(24502)

NDIS Hook果然很方便

2010-9-10 Nie.Meining Coding

今天抽时间尝试了下NDIS Hook,搞了个demo,感觉确实比NDIS中间层驱动方便多了……

点击查看原图

阅读全文>>

评论(0) 浏览(14849)

继续Ring0注入Ring3

2010-3-16 Nie.Meining Coding

查WRK时偶然发现有个RtlCreateUserThread的函数,声明如下:

NTSTATUS RtlCreateUserThread(

    IN HANDLE Process,

    IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor OPTIONAL,

    IN BOOLEAN CreateSuspended,

    IN ULONG ZeroBits OPTIONAL,

    IN SIZE_T MaximumStackSize OPTIONAL,

    IN SIZE_T CommittedStackSize OPTIONAL,

阅读全文>>

评论(0) 浏览(33968)

Powered by emlog