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

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

2023-12-26 13:01
1929
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
//);

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


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2024-4-9 11:20 被神经蛙555编辑 ,原因:
上传的附件:
收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 3096
活跃值: (2444)
能力值: ( LV8,RANK:147 )
在线值:
发帖
回帖
粉丝
Roger 1 2023-12-26 17:21
2
0
dump?
雪    币: 197
活跃值: (611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
神经蛙555 2023-12-26 18:05
3
0

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


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

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

我想在文件打开时计算该文件的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编辑 ,原因:
雪    币: 5844
活跃值: (3650)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
yimingqpa 1 2023-12-27 10:25
7
0
create里调用zwcreate函数,你这考虑重入的问题了吗?
雪    币: 197
活跃值: (611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
神经蛙555 2023-12-27 10:26
8
0

感谢各位高手的回复

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