/proc/bus/pci/devices なりすまし

/proc/bus/pci/devices なりすまし

システムに特定のデバイスが必要なプログラムがあります(私が理解したところ、このプログラムはハードコーディングされたベンダーID:デバイスIDペアのリストと比較して/ proc / bus / pci / devicesをチェックします)。物理的に接続されていない状態でデバイスが存在すると思うようにこのソフトウェアをだますことができる方法は何ですか? /proc/bus/pci/devicesに行を追加したり、特定のプログラムに対するシステムコールを傍受して変更したりする方法はありますか?

答え1

strace「特定のデバイスの存在」が何を意味するのかを調べるには、プログラムを実行する必要があります。正確に

実際に、その「ファイル」を通常のファイルとして読み取るのは簡単です。プログラムに正しいファイルを表示しないでください!

ファイルシステム名前空間の目的は、ファイルシステムのプログラムの視点を分離することです。 (これはコンテナエンジン(dockerなど)の実行方法の一部です。)

したがって、これがunshare -m役に立ちます。その後、必要に応じて/procマウントを操作できます(ヒント:別の場所にマウントし、オーバーレイfsの下位レイヤーとして「より良い」/proc/bus/pci/デバイスを偽造する)〜と一緒に警告する)。

また、これは実行時にパッチを適用するのが非常に簡単なようです。起動するには、実行し、必要な行を含むテキストファイルを開き(新しいファイル記述子を提供し、 "open()"システムコールの監視ポイントを提供し、/ proc / bus / pci / devicesが開いたときにキャプチャします)します。 、ファイル記述子を返すのではなく、ファイル記述子をテキストファイルに割り当てます。

関連情報