如何识别移动硬盘(Ring3)

2011-5-1 Nie.Meining Coding

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

 

Ring 3下的方法:

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

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

BOOL IsUsbDriver(TCHAR tchDrvName)

阅读全文>>

评论(0) 浏览(14584)

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

2010-12-31 Nie.Meining Coding

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

 点击查看原图

阅读全文>>

评论(0) 浏览(25707)

KeyObject结构中的Name信息

2010-11-26 Nie.Meining Debug

今天遇到个问题,需要从KeyObject结构中找出Name信息。
首先查看一下Key这种类型的Object对应的QueryNameProcedure:

0: kd> !object E1B90D70h

Object: e1b90d70 Type: (821ac858) Key

    ObjectHeader: e1b90d58 (old version)

    HandleCount: 1 PointerCount: 1

    Directory Object: 00000000 Name: \REGISTRY\USER\S-1-5-21-789336058-2146961391-682003330-1003

0: kd> dt _OBJECT_HEADER e1b90d58

阅读全文>>

评论(0) 浏览(26203)

输入法、词霸、超级卸载,继续娱乐

2010-11-5 Nie.Meining Debug

输入法、词霸、超级卸载,继续娱乐
上午看到输入法和词霸也不甘寂寞掺合进来凑热闹,很有意思:
http://tech.qq.com/a/20101105/000198.htm
刚刚又看到超级巡警出了这样一个东西,娱乐气息愈发浓厚了:
http://www.sucop.com/
“近日,我们接到众多网友投诉,一些产品无法进行干净卸载删除,应广大网友要求,我们推出通用软件卸载工具。目前第一版本仅支持360产品。”
下载下来看了看,一个驱动,一个dll,一个exe。把驱动拖进IDA简单看了看,功能很简单,在IOCTL里接收应用层传入的文件名,然后发IRP删文件。

阅读全文>>

评论(0) 浏览(24437)

劝架补丁,继续娱乐

2010-11-4 Nie.Meining Debug

突然发现人人网也来掺和了一把,出了个什么劝架补丁,下下来发现竟然有1.6M大,拖IDA里去看了看,其中用于“劝架”关键部分就这么两处,在QQ开始自残时触发:

.text:00401E74                 push    104h            ; nMaxCount

.text:00401E79                 lea     eax, [ebp+0F0h+String1]

.text:00401E7C                 push    eax             ; lpClassName

.text:00401E7D                 push    ebx             ; hWnd

.text:00401E7E                 call    ds:GetClassNameA

.text:00401E84                 push    offset String2 ; "#32770"

阅读全文>>

评论(0) 浏览(14191)

Powered by emlog