如何监控mac平台上的操作

时间:2013-09-04 11:39:59

标签: macos kernel-extension file-monitoring

我正在尝试获取文件打开/写入/创建操作,我已经尝试过fslogger,它只能获取文件创建/删除....等操作,无法进行打开/关闭操作, 然后我写了一个驱动程序来做它,我可以进行打开/关闭操作,但无法进行创建操作,更重要的是,它太乱了! 例如,如果我打开一个文件并对其进行修改然后将其关闭,那么驱动程序会进行大量的打开/写入操作。我无法确定哪一个是由用户打开/关闭操作引起的。 关于这个的任何提示? 感谢。

1 个答案:

答案 0 :(得分: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,但你可能会用另一种方法取得成功(如果你这样做,请在评论中告诉我。)。

有关Kauth hereKQueue here的更多信息。它没有出色的记录,但是这两者之间有足够的信息可以解决你需要做的事情。