阅读:1832回复:10
各位大侠,怎样在磁盘级驱动上,监控IRP_MJ_WRITE获取对应应用程序命!!在线等!
我在磁盘层上挂接了我的驱动,这时候监控IRP_MJ_WRITE,想知道是哪个应用程序产生的这个中断,我用getprocessid获取到的大部分是system,进行数据写入,
我怎么做才能够知道,具体是哪个应用程序在写数据呢。例如:有个程序叫test.exe,它从d盘拷贝数据到e盘,我监控e盘的IRP_MJ_WRITE,我怎么能够准确的知道, 哪个IRP_MJ_WRITE是test.exe,产生的呢,?希望各位大侠多指导,找不到答案郁闷阿!!!那位可以指导的或交流的QQ:9984022, |
|
沙发#
发布于:2007-03-20 10:18
我也一直在寻找如何在FSD和DISK DRIVER中如何保持联系一致,不过感觉的确很困难啊......
|
|
|
板凳#
发布于:2007-03-20 07:10
引用第8楼guobing_xu于2007-03-19 23:11发表的“”: 很遗憾~~~FSD和disk不在同一个device stack中,一般都要由fsd重新构造IRP,除非fsd接到的IRP已经给disk device stack预留了stack location,但貌似不太可能~~~ |
|
|
地板#
发布于:2007-03-19 21:11
如果我在文件过滤层hook,然后可以修改irp的某些标志,在传递下去,这样可以么,到了磁盘层,我修改得irp的标志位还可能保留么?
|
|
地下室#
发布于:2007-03-19 21:09
找个合适的地方hook ,以后呢,怎样和下面的驱动结合起来!
|
|
5楼#
发布于:2007-03-13 15:54
Re:各位大侠,怎样在磁盘级驱动上,监控IRP_MJ_WRITE获取对应应用程序命!!在线
找个合适的地方hook ![]() |
|
6楼#
发布于:2007-03-13 15:07
引用第4楼rayyang2000于2007-03-13 08:12发表的“”: 嘿嘿~ |
|
|
7楼#
发布于:2007-03-13 08:12
引用第3楼killvxk于2007-03-13 10:00发表的“”: 这个思路有些意思,毕竟FileSystem的各个IRP处理都由Windows保证各个运行的环境,大多数IRP的thread context是不变的,这里得到的pid都是有效的。但是也只有FSD才可以知道哪个FileSystem IRP对应于哪个Storage IRP,而如果没有这个信息,Storage driver是没有办法判断它自己收到的IRP的pid。但是ntfs.sys都没有source code,这种信息都无从得知,所以这个思路看起来有局限性。 |
|
|
8楼#
发布于:2007-03-13 08:00
引用第2楼rayyang2000于2007-03-13 07:54发表的“”: 以前看过一个FSD+Disk的,FSD里取pid,处理的——disk里根据FSD传下来的东西处理...老复杂了~ 而且是FSD,不是Filter差距太大~ |
|
|
9楼#
发布于:2007-03-13 07:54
不可能做到。storage的driver大多数的IRP都是由disk.sys/cdrom.sys用StartIo或者WorkerThread来传送的,中间的各个filter driver也有可能使用这种方式来传送IRP,这样造成有些IRP运行在<= DISPATCH_LEVEL上,而且thread context都被switch过,所以很多时候,你只能得到System。
|
|
|
10楼#
发布于:2007-03-12 20:18
貌似可以参看FSD获得进程的方法~
|
|
|