私が現在取り組んでいるプロジェクトでは、WindowsXPでDeepFreezeやSandboxieと同様の方法でディスクI/Oをリダイレクトするために使用されるcopy-on-w/mメカニズムの実装が必要です。可能であれば、VirtualCloneDriveがディスクドライブをシミュレートしてISOイメージを透過的にマウントするのと同じように、ユーザーの変更されたファイルを「マウント」できるようにしたいと思います。
このようなプログラムは、ミニフィルタードライバーを使用してI/O要求をリダイレクトすることを理解しています。標準プロセスでは、変更されたデータをセカンダリロケーションにコピーしてから、そのデータに後でアクセスするためにそのストレージを読み取り/変更します。だから私はそこで何をする必要があるか理解していると思います。CD / DVDドライブのシミュレーションとそれにイメージをマウントすることになると、私は完全に迷子になります。
私はオンライン(Google、MSDN、The Code Projectなど)や、WindowsDriverFoundationやWindowsNTFile System Internals:A Developer's Guideを使用したドライバーの開発などの書籍を探していますが、特定の情報と例(監視、傍受について)を見つけています。リクエストのリダイレクトとループバックデバイスの作成)は困難であることが証明されています。私はまだ関連する技術にかなり慣れていないので、おそらく私は木のために森を見るのに苦労しています。
誰かが同じような状況にあり、有用なリソースを発見したのか、それとも私を正しい方向に向けて同様の機能を実装できるのか、疑問に思っていました。
編集:この質問は有用なリソースのように思われるので(私の特定のユースケースではありませんが)、今後の回答に追加するためにここにリンクしました。
いくつかの説明:
ユーザーが管理者権限を必要とせずにアプリケーションをインストールして使用できるようにするプログラムを作成しようとしています。プログラムは、ファイルシステム/レジストリの変更を別のストレージ領域(ペンドライブやネットワークストア上のファイルなど)に保存し、ホストプログラムが実行されているデスクトップにそれらをオンザフライで統合できるようにすることで機能します。 。デスクトップをUSBペンで持ち運び、プラグを差し込むと、設定が適用されます。
I / Oをリダイレクトするには、次のことができます。
- プロセスのインポートアドレステーブル(IAT)にパッチを適用して、アプリケーションレベルでカスタマイズされたコードを挿入します。
- ユーザーモードのフィルタードライバーを作成して、その場でリクエストを変更します。
- セキュリティを強化するには(実際には)、カーネルモードドライバーを実装して、AVソフトウェアと同様の方法でシステムサービス記述子テーブル(SSDT)にパッチを適用します。
これらのアプローチにはそれぞれ長所と短所があります。たとえば、アプローチ3はアプローチ1よりもはるかに困難です。より多くのセキュリティを提供しますが、それでも打ち負かすことができます(理論的な攻撃は'96年から、実際の攻撃は'07年から存在しています)。
私は当初、特定のセキュリティ機能を検討していました( WoW64互換性設定のようなi / oリダイレクトだけではありません)。しかし、これを見始めてから、ユーザーを自分自身から永久に保護することはできず、悪意のあるプロセスや愚かなユーザーからホストシステムを守るためにどれだけの労力を費やしても、それを打ち負かすことができることを思い出しました(または間違いを犯す可能性が高くなります。)また、サンドボックスとウイルス対策ホイールの再発明を避け、いくつかの便利な機能の作成に専念することにしました。「ツールは1つの仕事をし、それをうまくやる」という哲学がその日を勝ち取りました。
一言で言えば、私がやりたいのは、VMスナップショットと同様の機能を実装し、変更を自分のストレージ領域にリダイレクトすることだけです。下の図は少し古くなっていますが、現在よりも私の意図を伝える方が良いかもしれません:-)