2012-11-28 31 views
1

我是C#開發人員,主要使用網絡。在BIOS中編程

這是我想要的: 我想創建一個例程,直接在機器上運行(獨立於操作系統),以便如果我重新安裝操作系統,那麼我的例程仍然存在。

基本上我想創建一個防盜系統。該例程將獲得筆記本電腦的GPS位置,並將其發送到特定的電子郵件。

我認爲它只能在BIOS級別編程中完成,但我沒有找到第一步。

+1

如果沒有** A **專用硬件或** B **一些嚴重的BIOS黑客攻擊,我不認爲這很容易實現。但是,否則一個**可能的項目,會讓你成爲一個幸運**。 –

+4

大多數BIOS供應商都很難(有意)。查看[coreboot](http://www.coreboot.org/)作爲開源可擴展的起點。 – Flexo

+0

@Flexo:將其置於答案中。這非常有幫助。 –

回答

4

傳統的PC BIOS供應商竭力保持資產的祕密。這使得BIOS級別的編程非常困難。它特定於BIOS的供應商,它運行的特定硬件的特定版本,您將修補二進制文件以注入代碼。

爲BIOS提供兩個(或更多)EEPROM的主板可以讓這樣的工作成爲可能,因爲沒有太多的現金支出 - 它確保如果你搞砸了,你仍然有引導和重新刷新你破壞的圖像的方法。

Coreboot是一款免費的軟件替代品,旨在將傳統的封閉式BIOS供應商從引導過程中剪除。它是可擴展的(非常少的ASM)和開放源代碼,使它成爲開始尋找是否要開發BIOS擴展的好地方。

新硬件上的EFI也相當顯着地改變了畫面。例如,您可以在內部USB設備上將您的軟件顯示爲EFI extension

+0

+1 ...它讓我想起EFI擴展開發。如何在沒有任何嚴重仿真器的情況下調試這些東西?如果沒有它,試用每個版本都是非常耗時的工作。這讓我回到九十年代,當我對慢C++編譯器/鏈接器嗤之以鼻... :) –

+0

@RobertKoritnik - 與EFI至少虛擬化它(有時)至少是一種理智的方式。 – Flexo

+0

這可能嗎?要使特定的虛擬機運行特定的EFI擴展?我的意思是沒有在主機上運行相同的擴展? –