0

我正在尝试获取文件打开/写入/创建操作,我尝试过 fslogger 只能获取文件创建/删除....和其他操作,无法进行打开/关闭操作,然后我编写了一个驱动程序来做到这一点,我可以进行打开/关闭操作但不能进行创建操作,而且太乱了!例如,如果我打开一个文件并修改它,然后关闭它,驱动程序会得到很多打开/写入操作..我无法判断哪个是真正由用户打开/关闭操作引起的..任何提示对这个?谢谢。

4

1 回答 1

1

您最好的选择是 KAuth 系统。您安装您的 kauth 处理程序(作为内核扩展)并在有人尝试创建、打开或关闭文件时获取各种回调代码。这涉及在打开文件的关键路径中获取回调,因此无论您做什么都必须快速!

去引用:

KAUTH_SCOPE_FILEOP 定义了以下操作。

  • KAUTH_FILEOP_OPEN
  • KAUTH_FILEOP_CLOSE
  • KAUTH_FILEOP_CLOSE_MODIFIED
  • KAUTH_FILEOP_RENAME
  • KAUTH_FILEOP_EXCHANGE
  • KAUTH_FILEOP_LINK
  • KAUTH_FILEOP_EXEC

https://developer.apple.com/library/mac/technotes/tn2127/_index.html

如果您正在编写一个 kext,那么您就会遇到如何将该信息返回到用户空间的问题。FWIW 我使用了 Kqueue,但你可能会用另一种方法成功(如果你这样做,请在评论中告诉我!)。

有关KauthKQueue的更多信息,请点击此处。它没有出色的记录,但是这两者之间有足够的信息来确定您需要做什么。

于 2013-09-04T12:07:10.237 回答