Insyde BIOS@G50-80 初探


近些天為了激活筆記本上的WoL功能,對UEFI BIOS有了一些了解。新一代的UEFI規范實現了很多先進的功能,比如圖形界面,文件系統支持,擴展性,secure boot,secure flash(capsule)等,而這些原本是為了使用戶體驗更好,使用更方便、安全的的功能,被廠商念錯了經。M$利用secure boot功能限制電腦安裝其他的操作系統,甚至安裝了Ubuntu一類的系統,連進一步安裝各種驅動都要受到限制(這個以后有空再寫,大體上可以通過PK自簽名繞過)。LEN0V0利用UEFI的高級功能,在用戶重裝系統后自動重新安裝聯想組件,本來無可厚非,無奈國內版本重裝的**@*%#¥……,而且前段時間被爆出了安全漏洞。穡cure flash使得刷新固件變得異常困難,完美的刷寫只有破解Signed Capsule的結構或者使用SPI燒錄。更不用提白名單限制用戶安裝新網卡、前段時間鬧得沸沸揚揚的ME漏洞、EC漏洞等等。總之UEFI真正的強大功能能否被實現,還得看各個廠商的看(wei)法(suo)和態(cheng)度(du)了。。。真正的安全不是廠商覺得安全,而是讓用戶覺得安全,對自己使用的東西有完全的掌控。

 

平台:lenovo g50-80筆記本,UEFI BIOS,Insyde BIOS

結論:

1. 使用insydeflash工具,一般情況下執行的是secure flash,即直接將升級文件寫入內存區域(或ESP分區),形成capsule,然后發SMI指令,設置更新的變量,然后S3 reboot,重啟之后系統直接進入升級模式,由現有的BIOS執行capsule校驗,(可能包括Insyde QA檢驗和Manufacturer Trust檢驗,類似RSA簽名),校驗通過則由現有BIOS里面的flash程序刷新,順帶可能會刷新EC(內部微處理器固件,比如主板驅動,功能鍵驅動等)、ME(CPU微碼)、FV(不知道什么東西)。這期間可能會刷新系統變量,比如原有的BIOS設置,secure boot的key,slic,根證書等等。這就導致了BIOS修改之后無法刷入,BIOS校驗程序在FLASH里面,破解校驗程序本身就需要刷入新的BIOS,而不破解校驗則根本無法刷入新BIOS,這樣的安全性挺高。詳情參見UEFI capsule規范,以及Intel的開發指南,以及Tinocore的源代碼。(https://www.techinferno.com/index.php?/forums/topic/1870-flash-modified-biosuefi-which-are-digitally-signed-circumvent-secure-flash/ )

2. BIOS-MOD網站上給出了recover的方式,通過在開機時按幾個鍵,讓電腦進入BIOS修復模式,從USB讀取固件,自己恢復。這里的關鍵是如何進入恢復模式、如何得到正確的恢復文件。經過摸索,G50機型的恢復鍵是:關機,插上電池,插上裝有恢復文件的U盤,拔下AC -> 按住Fn+R不要松手,插AC -> 按電源鍵開機,電源燈閃爍紅色,松開所有按鍵。但是正確的恢復文件格式、文件名沒有找到。估計應該是使用官方給出的升級文件bioss.fd,也許應該重命名成Broadwell.fd(從PcdPeim模塊里找到,見 https://www.bios-mods.com/bios-recovery/insyde-bios-recovery/#comment-1457  ),拔下所有U盤之外的USB設備。。。。。。不過一直沒有成功,原因未知。而且據說可以恢復,恢復過程也需要校驗,這種方式可能也無法繞過校驗

3.直接刷寫flash,這種方式包括在DOS下用fpt tool(INTEL官方的刷寫程序,開發UEFI時的工具,可以直接刷寫),在EFI SHELL下用一些工具刷寫,DOS下用其他工具刷寫等,這些方式都是通過某些特殊的指令直接讀寫flash芯片,有很大的危險性,一方面這些讀寫指令有些可能被鎖定,很容易刷寫失敗。另一方面由於不了解flash里面的結構(廠家不可能公開),很容易刷成磚(比如寫錯區域,或者把啟動區代碼刷掉了等等)。。。這些都會造成不可修復的soft-brick。。。。。不保修的。一般也無法個人修復,除非你有SPI工具。

4.SPI方式,利用燒錄器直接刷芯片,危險性同上,但是由於以SPI方式,flash里面的內容可以進行完全讀寫,可以先讀出來做一個完全備份。出現問題總能修復。好處在於利用夾具可以直接夾在芯片引腳上,無需拆焊,很方便。這也是一般的主板維修方法。(https://www.bios-mods.com/forum/Thread-TUTORIAL-how-to-unlock-hidden-tabs-in-lenovo-g50-80-Mod-lenovo-g50-80-bios  )

但是!FLASH芯片很容易刷壞的,一旦壞了就比較麻煩了。另外穩定的SPI工具也不便宜。而且,對於EC和CPU ME,似乎沒有辦法直接刷寫。Nvram(保存系統變量的位置)暫時不清楚在哪。

5.直接讀寫變量,實現部分修改的目的。這也是在BIOS-MOD論壇上推薦的辦法。大體是在DOS下或者EFI SHELL下直接讀寫NVRAM,達到越過BIOS界面直接修改系統功能的目的。問題同3,某些讀寫指令可能被鎖住了。至於如何確定某個變量的儲存位置,需要解析UEFI BIOS文件,有些工具可以實現,包括MDL和BIOS-MOD論壇里的各種工具、腳本,比如Universal IFR Extractor等,大致是通過解析UEFI BIOS文件找到變量儲存位置(UEFI文件很容易解析,有固定的格式 ,工具能解析大部分格式,但有的廠商的UEFI BIOS解析不出來)。(https://www.bios-mods.com/forum/Thread-READ-FIRST-Access-Advanced-settings-through-EFI-shell   )。其中的BOOTX64.EFI其是通用的UEFI SHELL,也可以通過Tinocore的對應源代碼自己編譯。

以上就是幾種刷寫Insyde BIOS的方法。處理Insyde BIOS的具體細節可以google或者在BIOS-MOD以及MDL論壇等去找。下一篇繼續。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM