透過偽造 PCIe 設備來欺騙 BIOS POST

透過偽造 PCIe 設備來欺騙 BIOS POST

我想讓 Bios POST 進程相信顯示卡已安裝。之所以會出現這種需要,是因為有人不太聰明,認為沒有活動顯示卡的主機板不應該啟動。之前在其他問題中已經最深入地解決過這個問題:現代 PC 是否需要顯示卡才能運作?

我對 BIOS/硬體互動的理解是,BIOS 在非常初級的通訊層級上識別硬體的種類,而且沒有很多通道可以進行這種通訊(我懷疑引腳 7 A 側接地)。雖然對於 USB 設備,識別設備性質的程式碼很容易在網路上找到,但對於 PCIe 設備,這似乎是一個嚴格保守的秘密,或者更容易被瑣事所混淆。然而,這必須是教科書知識,所以如果有人知道這是在哪裡指定的或更好地在實踐中如何工作,我會很高興。

我確實知道我可以透過 BIOS 啟動主機板,拔出顯示卡並插入 SATA 轉接器。但這樣做會讓重新啟動變得很麻煩,有時會導致我延遲更新,以至於我需要因為其他原因重新啟動。

答案1

USB和PCI裝置辨識其實非常相似。在 PCI 的情況下(PCIe 是相同的),資訊位於 PCI 配置標頭中。它們出現在物理位址空間中可預測的、因此可列舉的位置。

配置標頭的格式是非常公開的。有供應商代碼、產品 ID、子系統 ID 和修訂號。還有一個「類」代碼。顯示卡的類別為 030000。

這就是韌體所尋找的內容。你無法透過將幾個引腳連接在一起來欺騙它。您將需要一個標準 PCIe 目標裝置的框架,該框架透過填充的配置標頭來回應查詢。

更糟的是:我不認為建立一個謊報其裝置 ID 和類別程式碼的「簡單」PCIe 裝置就足夠了。你的韌體會想要具有標準 VGA 暫存器介面的顯示卡,這是行不通的。

相關內容