0

Loadable-Kernel-Module が linux-kernel に挿入されており、読み取り、書き込み、オープン、クローズ機能がフックされていると仮定します。これで、任意のファイルへのアクセスを停止できますが、ファイルが USB デバイス、カード、ディスクなどのデバイスの外部にコピーされるのを停止したいのです。私が知りたいのは、LKM に座って関数呼び出しをフックしてファイルが外部デバイスに書き込まれていることを確認しますか?.

また、コピー操作中にどのシステムコールが使用されるか知りたいですか? プログラムがファイルを開いてそこから読み取り( read システムコール)、次に2番目のファイルに書き込む( write システムコール)という考えがありますが、ファイルを開くプロセスがファイルへの書き込みアクセスを停止しようとしたときに奇妙な動作を観察しましたfile は、ファイルを保存するためにそのファイルの書き込み操作を呼び出すことはありません (pdf ビューアーでチェックされます)。

この奇妙な動作について誰かが考えている場合、またはファイルへの書き込みを停止する方法を知っている場合は、それも共有してください。

4

1 に答える 1

1

彼らはmmap読み書きをすることができました。または、元のファイル全体をメモリに読み込み、閉じてから宛先を開くこともできます。

または、ファイルを暗号化してから、USB 上の新しいファイルに書き出すこともできます。

または、内容を少し編集して保存することもできます。

または、gvfs を使用してネットワーク/USB デバイスにアクセスすることもできます。

または、ユーザーが再起動して別の OS にファイルをコピーすることもできます。


本当に際立っているのは、問題が本当に難しいということだけです。決心したユーザーは、アクセスできるシステムからデータを抽出する方法を常に見つけます。

最善の策は、偶発的な漏洩を防ぐことです。そのため、リムーバブル メディアを閉じた後にファイルをスキャンし、漏洩したくないコンテンツが含まれていないことを確認してください。存在する場合は上書きして削除します。

または、最初からデバイスのマウントをブロックし、gvfs も無効にします。


フックが write() をインターセプトしない理由については、次のいずれかです。

  1. あなたのフックは実際には操作を傍受していません。
  2. アプリケーションは write() を使用してコンテンツをファイルに格納していません。
于 2013-03-26T18:21:41.043 に答える