PCIeデバイスを偽装してBIOS POSTを不正に実行する

PCIeデバイスを偽装してBIOS POSTを不正に実行する

BIOS POST プロセスにグラフィック カードがインストールされていると認識させたいと思います。この必要性は、あまり賢くない誰かが、アクティブなビデオ カードのないボードは起動しないはずだと決めたために生じました。これは、以前に他の質問で最も詳細に取り上げられています。最近の PC を実行するにはグラフィック カードが必要ですか?

BIOS/ハードウェアの相互作用に関する私の理解では、BIOS はハードウェアの種類を非常に基本的な通信レベルで識別し、さらに、そのような通信が行われるチャネルは多くありません (ピン 7 A 側が接地されていると思われます)。USB デバイスの場合、デバイスの性質を識別するコードは Web で簡単に見つけることができますが、PCIe デバイスの場合、これは厳重に守られた秘密であるか、雑学によって難読化されているようです。ただし、これは教科書的な知識であるはずなので、これがどこで指定されているか、または実際にはどのように機能するかを誰かが知っていれば幸いです。

BIOS を過ぎてボードを起動し、グラフィック カードを取り外して SATA アダプターを差し込めることはわかっています。結局のところ、PCIe はホットプラグ対応なので、このように動作するはずです。しかし、これを行うと、再起動が面倒になり、他の理由で再起動が必要になるまで更新が遅れることがあります。

答え1

USB と PCI のデバイス識別は、実際には非常に似ています。PCI の場合 (PCIe も同様)、情報は PCI 構成ヘッダーにあります。これらは、予測可能で、したがって列挙可能な場所の物理アドレス空間に表示されます。

構成ヘッダーの形式は非常に公開されています。ベンダー コード、製品 ID、サブシステム ID、リビジョン番号があります。また、「クラス」コードもあります。グラフィック カードはクラス 030000 です。USB と PCI でも同じベンダー コード セットが使用されます。たとえば、ベンダー 0x8086 は Intel です。

これはファームウェアが探しているものです。いくつかのピンを接続するだけではファームウェアを騙すことはできません。クエリに応答して構成ヘッダーが設定された標準の PCIe ターゲット デバイスのスケルトンが必要になります。

さらに悪いことに、デバイスIDとクラスコードについて嘘をついた「単純な」PCIeデバイスを組み立てるだけでは十分ではないと思います。ファームウェアはに話す標準の VGA レジスタ インターフェイスを備えたグラフィック カードでは動作しません。

関連情報