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 を使用しましたが、別の方法で成功する可能性があります (使用する場合はコメントでお知らせください)。

Kauthの詳細についてはこちらKQueueの詳細はこちらをご覧ください。見事に文書化されているわけではありませんが、これら2つの間に何をする必要があるかを理解するのに十分な情報があります.

于 2013-09-04T12:07:10.237 に答える