首页
社区
课程
招聘
未解决 [已解决]mninfilter里边打开文件蓝屏是怎回事呢
发表于: 2023-12-26 13:01 2160

未解决 [已解决]mninfilter里边打开文件蓝屏是怎回事呢

2023-12-26 13:01
2160
1
2
3
4
{ IRP_MJ_CREATE,
  0,
  FsFilter1PreOperation,
  FsFilter1PostOperation }

在函数FsFilter1PreOperation里边调用

1
2
3
4
5
6
7
8
9
10
11
status = ZwCreateFile(&hFile,
    GENERIC_READ| SYNCHRONIZE,
    &objAttributes,
    &ioStatus,
    NULL,
    FILE_ATTRIBUTE_NORMAL,
    FILE_SHARE_READ,
    FILE_OPEN,
    FILE_SYNCHRONOUS_IO_ALERT,
    NULL,
    0);

或者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//status = FltCreateFile(
//  g_FilterHandle,
//  g_FltObjects->Instance,
//  &hFile,
//  GENERIC_READ| SYNCHRONIZE,
//  &objAttributes,
//  &ioStatus,
//  NULL,
//  FILE_ATTRIBUTE_NORMAL,
//  FILE_SHARE_READ,
//  FILE_OPEN,
//  FILE_SYNCHRONOUS_IO_ALERT,
//  NULL,
//  0,
//  0
//);

就蓝屏了,这是啥原因,请高手说一下


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-4-9 11:20 被神经蛙555编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 3680
活跃值: (3086)
能力值: ( LV8,RANK:147 )
在线值:
发帖
回帖
粉丝
2
dump?
2023-12-26 17:21
0
雪    币: 5
活跃值: (637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

使用的虚拟机,32位win7,没有生成dump文件,该设置的都设置过了,就是没有dump文件。
我把代码上传了,您有空的话看一下。没什么功能,就是一个学习工程


(我想回复2楼,怎么回复不了。。。)

最后于 2023-12-26 18:07 被神经蛙555编辑 ,原因:
2023-12-26 18:05
0
雪    币: 6895
活跃值: (3484)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
下面的倒是没觉得有啥,但是上面那个应该会无限重入然后把栈撑破吧
2023-12-27 09:11
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
Roger dump?
test
2023-12-27 09:37
0
雪    币: 5
活跃值: (637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

我想在文件打开时计算该文件的md5值,是特定的值,就拦截。那怎么做呢。
就是打开文件哪里出错了。我把ZwCreateFile函数换成FltCreateFile函数,这个函数的第二个参数:
[in, optional] Instance
An opaque instance pointer for the minifilter driver instance that the create request is to be sent to. The instance must be attached to the volume where the file or directory resides. This parameter is optional and can be NULL. If this parameter is NULL, the request is sent to the device object at the top of the file system driver stack for the volume. If it is non-NULL, the request is sent only to minifilter driver instances that are attached below the specified instance.

好像可以避免重入?我使用这个函数后还是蓝屏了。instance来自于FsFilter1InstanceSetup函数里边保存下来的全局变量


【刚才又看了看代码,应该是参数传得不对,不应该用全局变量,我把

FLT_PREOP_CALLBACK_STATUS

FsFilter1PreOperation (

    _Inout_ PFLT_CALLBACK_DATA Data,

    _In_ PCFLT_RELATED_OBJECTS FltObjects,

    _Flt_CompletionContext_Outptr_ PVOID *CompletionContext

    )

里边的FltObjects传给FltCreateFile。让它使用后后不蓝屏了。

很惭愧犯这种低级错误(其实还是因为我对一些概念比较模糊)。

最后于 2023-12-27 10:33 被神经蛙555编辑 ,原因:
2023-12-27 09:44
0
雪    币: 6552
活跃值: (4346)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
7
create里调用zwcreate函数,你这考虑重入的问题了吗?
2023-12-27 10:25
0
雪    币: 5
活跃值: (637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8

感谢各位高手的回复

最后于 2023-12-28 10:31 被神经蛙555编辑 ,原因:
2023-12-27 10:26
0
雪    币: 498
活跃值: (47971)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
顶一下
2023-12-29 08:26
0
游客
登录 | 注册 方可回帖
返回
//