社区
非技术区
帖子详情
文件系统过滤怎么在IRP_MJ_WRITE中ZwCreateFile
VirtualRookit
2012-03-31 11:35:39
RT..文件系统过滤在IRP_MJ_WRITE中怎么用ZwCreateFile,好像不能直接用吧,谁解答一下。
...全文
111
1
打赏
收藏
文件系统过滤怎么在IRP_MJ_WRITE中ZwCreateFile
RT..文件系统过滤在IRP_MJ_WRITE中怎么用ZwCreateFile,好像不能直接用吧,谁解答一下。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
w24530
2012-04-05
打赏
举报
回复
mark~
虚拟还原功能的源代码
(此资源来自网络,本人不负任何责任) 易 游等等的虚拟还原功能都是用这开发的 一 安装和使用方法: 1 安装:看install.txt文件; 2 挂载:
file
disk /mount 0 c:\proj\my
file
disk\a.img e: 3 卸载:
file
disk /umount e: 详细看example.txt文件,在本站的下载
中
心有下载,包括核心层和应用层的源码。 最多可以同时挂4个设备,分别定义4个设备号,如果同一设备号使用2次,会进入OPEN_
FILE
两次,出现"
File
Disk: IOCTL_
FILE
_DISK_OPEN_
FILE
: Media already opened\n"的错误提示; 二 基本知识: 1 关于DefineDosDevice函数: 在应用层开发
中
调用它来创建一个\??目录下的符号链接,如: BOOL okay = DefineDosDevice(DDD_RAW_TARGET_PATH, "test", "\\Device\\
File
Disk0"); 调用成功后,将会在设备命名空间的\??目录下生成一个名为”test“的符号链接,该链接指向”“\\Device\\
File
Disk0“这个对象。 而在核心态的驱动程序
中
,需要调用以下的函数来创建相应的符号链接: Io
Create
SymbolicLink(linkname, targname); Linkname是要创建的符号链接名,相当于上面函数
中
的”test”,targname是该链接指向的设备对象。 2
file
disk的源映像可以是img,iso,flp等,这些都是磁盘上一个分区的平面映像,所以挂上后可以直接访问,但不能是整个硬盘的img映像或其它格式如rar等; 3
file
disk的源映像文件名称必须是全路径,即使是在当前目录下也必须是全路径; 4 源映像文件如果不存在且参数
中
没有指定只读,那么只要在参数
中
指定了大小则会主动创建它,使用前会提示先“格式化”,之后就可正常使用了; 三 核心层源码分析: 1 DriverEntry: 主函数入口;备份传入路径,查询注册表值,调用
Zw
Create
DirectoryObject创建设备目录,重复4次调用
File
Disk
Create
Device创建设备,初始化操作函数指针。 2
File
Disk
Create
Device:调用Io
Create
Device创建设备,KeInitializeEvent初始化事件对象,Ps
Create
SystemThread创建内核线程,入口函数是
File
DiskThread,传入的函数参数为Io
Create
Device返回的设备对象。 3
File
DiskThread:首先调用KeSetPriorityThread更改自身线程的优先级为LOW_REALTIME_PRIORITY,然后开始for(;;),调用KeWaitForSingleObject函数等待事件对象有信号,如果等到,判断事件类型,有如下几种:
IRP
_
MJ
_READ:调用
Zw
Read
File
读取文件,从内核到用户缓冲区;
IRP
_
MJ
_
WRITE
:调用
Zw
Write
File
写入文件,从用户到内核缓冲区;
IRP
_
MJ
_DEVICE_CONTROL:在
File
DiskDeviceControl设置事件才会触发,主要有如下两种操作码: IOCTL_
FILE
_DISK_OPEN_
FILE
:调用
File
DiskOpen
File
。 IOCTL_
FILE
_DISK_CLOSE_
FILE
:调用
File
DiskClose
File
。
File
DiskOpen
File
:根据用户程序传入的映像文件全路径,调用
Zw
Create
File
在内核
中
打开它,如果文件不存在则再创建它,返回文件句柄。
File
DiskClose
File
:调用
Zw
Close关闭文件。 4
File
Disk
Create
Close: 仅返回成功;对应
Create
,Close操作。 5
File
DiskRead
Write
:将IO包插入队列,然后调用KeSetEvent函数,激活事件对象;对应Read,
Write
操作。 6
File
DiskDeviceControl:用户程序调用DeviceIoControl的响应函数,主要有如下两种操作: IOCTL_
FILE
_DISK_OPEN_
FILE
:设置好参数,将IO包插入队列,设置对象为有信号。 IOCTL_
FILE
_DISK_CLOSE_
FILE
:将IO包插入队列,设置对象为有信号。 其它的操作类型因为输入输出共用一个缓冲区,所以都采用系统默认处理,设置好需要输出的参数后,就直接从这个函数返回了。如: IOCTL_DISK_GET_DRIVE_GEOMETRY,IOCTL_CDROM_GET_DRIVE_GEOMETRY等; 7 有4种操作是自定义的:
File
DiskRead
Write
函数两种,
File
DiskDeviceControl函数两种,对应的操作码分别是:
IRP
_
MJ
_READ,
IRP
_
MJ
_
WRITE
,IOCTL_
FILE
_DISK_OPEN_
FILE
,IOCTL_
FILE
_DISK_CLOSE_
FILE
这4种,在
File
DiskThread
中
等待这4种事件发生,如果等到,就调用相应的函数处理。 四 应用层源码分析: 1 mount:调用DefineDosDevice在应用层创建一个指向设备命名空间的符号链接,用
Create
File
打开此链接,然后调用DeviceIoControl,控制码是IOCTL_
FILE
_DISK_OPEN_
FILE
,内核程序响应后,执行真正打开源映像文件的操作。 2 umount: 上面大致一样,只是多一些步骤,不同的是控制码改为IOCTL_
FILE
_DISK_CLOSE_
FILE
,之后必须发送FSCTL_DISMOUNT_VOLUME
IRP
_
MJ
_
CREATE
派遣例程里能获取的信息
在
IRP
_
MJ
_
CREATE
里面能够得到的调用
Zw
Create
File
传递的参数值,分析参数获取所需要
过滤
的文件信息. 详细说明的请参考下面代码框内容:/*++ 1.
irp
Sp->Parameters.
Create
: struct { PIO_SECURITY_CONTEXT SecurityContext; ULONG Options; USHORT POINTER_ALIGNMENT
File
Attributes; USHORT ShareAccess; U
Window XP驱动开发(二十三)Window驱动的派遣函数
转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家拍砖 参考书籍> 用户模式下所有对驱动程序的I/O请求,全部由操作系统转化一个叫做
IRP
的数据结构,不同的
IRP
数据会被“派遣”到不同 的派遣函数(Dispatch Function)
中
,这也是派遣函数名字的由来。 1、
IRP
与派遣函数
IRP
的处理机制类似Windows
<学习笔记>Windows驱动开发技术详解__派遣函数
文章转载于:http://blog.csdn.net/aksnzhy/article/details/6801372 派遣函数是Windows驱动程序
中
的重要概念。驱动程序的主要功能是负责处理I/O请求,其
中
大部分I/O请求是在派遣函数
中
处理的。 用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做
IRP
数据结构,不同的
IRP
会被“派遣”到不同的派遣函数
中
。
IRP
与派
page
file
vs mapped
file
& mm vs cc &
IRP
_PAGING_IO vs
IRP
_NOCACHE
/* * page
file
vs mapped
file
& mm vs cc &
IRP
_PAGING_IO vs
IRP
_NOCACHE * sunwangsunwangme@hotmail.com> * 2005-10-20 *///osr1
IRP
_PAGING_IO means that the
IRP
is paging i/o, for example if the
IRP
is
IRP
非技术区
15,447
社区成员
58,120
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章