首页
社区
课程
招聘
未解决 [求助]minifilter如何能准确识别文件的打开与关闭? 1000雪币
发表于: 2024-10-28 13:36 1171

未解决 [求助]minifilter如何能准确识别文件的打开与关闭? 1000雪币

2024-10-28 13:36
1171

有个需求就是识别文件的打开与关闭操作,用来记录打开文件的进程名和文件名.目前的策略在FslPreOperationCallback和FslPostOperationCallback中添加过滤,
比如:对经过的IRP过滤记录(IRP_MJ_CREATE,IRP_MJ_CLEANUP,IRP_MJ_CLOSE),如果当前是IRP_MJ_CLOSE,而且上一次是IRP_MJ_CLEANUP,且之前有IRP_MJ_CREATE 结合一些标志位判断,又同是一个FileObject,
则认为是打开文件.
这样有2个问题,:

  1. 无法准备的区分文件打开与关闭操作,大多数文件的打开文件和关闭都是这样的处理过程.而且标志位也相同.
  2. 有的程序打开和关闭不走这个过程,在FslPreOperationCallback和FslPostOperationCallback完全收不到.比如:win11下的notepad,以前notepad++,EmEditor,editplus,甚至pdf关联的浏览器之后,双击pdf浏览器打开.
    在FslPreOperationCallback和FslPostOperationCallbackp完全收不到.目前设置了3个高度值在360000~385000之间.

也考虑过使用IRP的顺序来判定,比如:当前是IRP_MJ_CLOSE,上一个是IRP_MJ_CLEANUP,再上一个是XXXX,再上一个是XXXX,发现用这种方式也不能判定.

请问有什么办法相对准确的不会遗漏,判定区分文件的打开与关闭操作?
可以让应用层做辅助配合.
麻烦各位帮忙.


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1022
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你是只需要抓到就可以还是需要拦截?minifilter里要精准的捕获打开关闭这一对操作比较麻烦,而且像notepad等,需要在map模式里抓,比较蛋疼。如果仅仅是抓到就可以的话建议尝试一下etw。
2025-2-22 10:06
0
雪    币: 11
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
建议改用IRP_MJ_CREATE跟踪句柄生命周期,在PostCreate记录打开,用PreCleanup/PreClose捕获关闭
2025-2-22 20:40
0
游客
登录 | 注册 方可回帖
返回