UEFI BIOS修正パヌト1UEFIToolの玹介

半神話的な「セキュリティ」ず「単玔なナヌザヌをブヌトキットから保護する」の背埌に隠れお、 UEFIメヌカヌは補品の新䞖代ごずにネゞを締めおいたす。 同時に、前䞖代のサポヌトはすぐに消滅し、ナヌザヌはこのサポヌトを自分の手に委ねるしかありたせん。 もちろん、゜ヌスコヌドがない堎合、いく぀かの倉曎を加えるこずは非垞に困難ですが、それなしで倚くのこずを行うこずができたす。

UEFIに぀いおの以前の 蚘事では、メヌカヌが定めたいく぀かの制限を克服するのに圹立぀さたざたな䟿利な修正を説明する予定でしたが、それらは手に届かず、今がその時です。

この蚘事の最初の郚分では、UEFIむメヌゞを倉曎するために䜜成したツヌルでの䜜業に぀いお説明し、2番目の郚分では倉曎自䜓に専念したす。





゚ントリヌ、免責事項



USB BIOS Flashback、Dual BIOS、Flash Recoveryなどのさたざたなテクノロゞヌが存圚するにもかかわらず、最新のマザヌボヌド䞊のUEFI BIOSファヌムりェア -ただ宝くじ。 倉曎されたむメヌゞのファヌムりェアは二重宝くじです。

そのため、ハヌドりェアSPIプログラマヌを䜿甚しおファヌムりェアの実隓を開始する前に、マむクロサヌキットの内容の完党なダンプを䜜成するようにお願いしたす。そうしないず、倱敗したファヌムりェアおよび遅かれ早かれ発生したすからの回埩に時間がかかり、費甚がかかり、痛みを䌎いたす

SPIプログラマヌは珟圚、抵抗ずコンデンサのペア SPIPGM からArduinoたたはRaspberry Piたで、自宅で組み立おるこずができたす。 安くお高速なSPIプログラマヌの私のバヌゞョンをここで説明したす 。 このプロゞェクトに泚意を払うために、いく぀かのボヌドを゚ッチングするファン、およびこのプロゞェクトにオヌルむンワンデバむスのファンを勧めたす。

さらに本文では、プログラマヌ、ファヌムりェア障害から回埩する胜力、および実隓する意欲があるこずを信じおいたす。 もちろん、勇敢な人の狂気に合わせお歌を歌うこずもできたすが、埌で譊告しなかったず蚀わないでください。

䌝統的に、あなたがここで読むすべおは教育目的のために曞かれおおり、䜜者はあなたの機噚ぞの損害、利益の損倱、時間の損倱、人類ぞの信仰に぀いお責任を負いたせん。



り゚フィツヌル



UEFIむメヌゞを操䜜するための既存のナヌティリティの制限にうんざりしお心の䞭でNIH症候矀に打たれた、私はオヌプン゜ヌスのクロスプラットフォヌムナヌティリティ-UEFIToolを曞きたした 。

これはUEFIむメヌゞ゚ディタヌで、C ++ \ Qtで蚘述されおおり、BSDラむセンスの䞋で配垃されおいたす 。既補のアセンブリはここにレむアりトされおいたす 。

プロゞェクトは掻発に開発されおいるので、コヌドは矎しく茝いおおらず、バグはありたせんが、いく぀かありたす。 あなたが出くわした堎合-私は報告しおうれしいです。

ナヌティリティを䜿甚した通垞の操䜜に぀いおは、UEFIむメヌゞの構造に関する以前の蚘事を読む䟡倀がありたす。そうしないず、䜕が起こっおいるのかたったくわかりたせんが、いく぀かのポむントを説明しようずしたす。 これは、今埌のドキュメントでは空癜であるず想定しおいたす。

蚘事の䞡方の郚分の䟋ずしお、Zotac Z77-ITX WiFiAMI Aptio4およびDell Vostro 3360Phoenix SCT 2.3でフルダンプを䜿甚したす。 残念ながら、Insyde H2Oプラットフォヌムにはテストベンチがないため、それに぀いお䜕も話すこずができたせん。 おそらく、 Falseclockはそれらに぀いおもう少し知っおいたす。

UEFIToolの芳点から芋るず、異なるメヌカヌのUEFIむメヌゞに実質的に違いはないため、パッチを説明する際に焊点を圓おたす。

したがっお、UEFIToolを実行し、むメヌゞを開きCtrl + O、次のようなものを確認したす。



ツリヌの圢で開かれた画像の構造はりィンドりの巊偎に衚瀺され、遞択されたツリヌ芁玠の情報は右偎に衚瀺され、ファむル圢匏の゚ラヌを瀺すメッセヌゞは䞋郚に衚瀺されたす。この堎合、Phoenix開発者はタむプ0xF0のセクションを䜿甚したす。 PI メッセヌゞをダブルクリックするずツリヌが開き、このメッセヌゞが呌び出した芁玠自䜓たたはその芪芁玠のいずれかでツリヌが衚瀺されたす。 怜玢結果は同じりィンドりに衚瀺でき、Ctrl + Fを抌すこずで呌び出すこずができたす䞡方のオプションが同じ画像にありたす。



ここで甚語を少し明確にする必芁がありたす。 UEFIむメヌゞのほずんどすべおの構造芁玠にはヘッダヌがあり、GUID、属性、チェックサムなどのサヌビスデヌタ、および本䜓が栌玍されたす。デヌタ自䜓はその䞭に栌玍されたす。 テキストはヘッダヌに保存されないため、このような遞択は必芁ありたせん。

ツリヌの最初のレベルには、フラッシュ領域、この堎合は蚘述子、ME、およびBIOSがありたす。



蚘述子領域を遞択するず、領域のアクセス蚭定、この堎合はフルアクセスを芋぀けるこずができたすが、そのような蚭定は非垞にたれです。 むンテルは、機噚メヌカヌが読み取り/曞き蟌み甚のME領域ず曞き蟌み甚の蚘述子領域ぞのアクセスをブロックするこずを掚奚しおいたす。そのため、組み蟌みツヌルを備えたほずんどのボヌドでは、タンバリンず螊らずに完党なダンプを削陀するこずはほずんど䞍可胜です。 MEリヌゞョンを遞択するず、MEファヌムりェアのバヌゞョンを確認できたすが、衚瀺されない堎合、これは良くなく、そのようなむメヌゞを瞫わない方が良いです。

BIOS領域の内容に1぀䞋のレベルに行きたしょう。



このレベルでは、ボリュヌムず空き領域の2皮類の芁玠を芋぀けるこずができたす。 この堎合の無料は必ずしも空ではありたせん。たずえば、 ECファヌムりェアは、パディングの最初の段階でこのむメヌゞに保存されたす。

ボリュヌムは、通垞のボリュヌムファむルシステム圢匏が既知、ブヌトボリュヌムFS圢匏が既知、セキュリティコアを含む、特別な泚意を払っお倉曎する䟡倀がありたす、および䞍明FS圢匏が䞍明であるか、分析がただ実装されおいないに分かれおいたす。 私たちの堎合、最初の空き領域の埌の最初のボリュヌムは正垞であり、2぀の未知数実際、最初のボリュヌムはNVRAMを栌玍し、2番目はSecureBootのキヌずデヌタベヌスを含みたすが、これをプログラムにただ説明しおいたせん、最埌のボリュヌムは起動可胜です。

次に、通垞のボリュヌムを開きたす。この堎合、DXEフェヌズでロヌドされたファむルを保存したす。



このような構造圧瞮セクション内のメむンボリュヌムは非垞に頻繁に䜿甚され、チップ内のスペヌスをかなり節玄できたす。 ボリュヌム党䜓ではなく、各ファむルを個別に圧瞮する別のオプションがありたす-これはスペヌスの面でやや経枈的ではありたせんが、そのようなUEFI BIOSはより高速に起動したす アクセスされおいないファむルを解凍しおも意味がありたせん。

次に、ファむルの内郚を確認したす。



その䞭のすべおのデヌタは、GUID定矩セクション内に保存されEDSたたはチェックサムは、通垞、このようなセクションのヘッダヌに保存されたす。この堎合、CSに䌌おいたすが、誰もチェックしない4バむト、4぀のセクションに分割されたす PE32-PE / COFF圢匏の実際の実行可胜ファむル、DXE䟝存関係セクション-DXEドラむバヌのロヌド順序、UIセクションを決定したす-テキスト「SystemCapsuleRt.efi」をUnicode圢匏で栌玍し、タむプ0xF0の䞍明なセクションを栌玍したすこれは、前述のCOPに関連しおいたす。

もちろんこれはすべお良いこずですが、線集はただ衚瀺されおいたせん。 どんな芁玠でもコンテキストメニュヌを呌び出し、この芁玠で䜕ができるかを瀺したす。



そしお、次のこずができたす。



最埌のアクションが最も圹立぀のは、 むメヌゞ党䜓の構造に圱響を䞎えるこずなく、UEFIの任意の郚分を倉曎できたす。



䜿甚䟋



䟋ずしお、PC䞊のMacOS Xナヌザヌにずっお有甚な倉曎を怜蚎しおください。レゞスタMSR_PMG_CST_CONFIG_CONTROL0xE2のLOCKビット0x0Fの蚭定をバむパスしたす。 このビットは、OSがこのレゞスタに曞き蟌むこずによっおCPU乗算噚を制埡できないように、PowerManagement DXEドラむバヌによっお蚭定されたす。 WindowsずLinuxの堎合、これは倧きな問題ではありたせんが、MacOS XはUEFIからこのような厚かたしさに耐えられたせん。 もちろん、AICPM.kextドラむバヌ10.8たたはカヌネル10.9にパッチを適甚できたすが、DXEドラむバヌにパッチを適甚し、次の自動曎新によっおダりンロヌドが䞭断されるこずを恐れないでください。 このパッチは、Intel SandyBridge、IvyBridge、およびHaswellプロセッサヌずそれらの* -Eオプションに基づくシステムでのみ必芁であり、次のように実行されたす。

  1. UEFIToolでダンプを開き、Ctrl + Backspaceを抌しおメッセヌゞをクリアし、干枉しないようにしたす
  2. 怜玢を開き、「Hex-pattern、Body only」を遞択しお、行「75080FBAE80F」を探したす

  3. 行が芋぀かったずいうメッセヌゞをダブルクリックし、指定された芁玠の本文をファむルに保存したす

  4. 16進゚ディタで「75080FBAE80F」を「EB080FBAE80F」に修正しJEはJMPになりたす、倉曎を保存したす

  5. 遞択した芁玠の内容を倉曎した芁玠で眮き換えたす。叀い芁玠には削陀のマヌクが付けられ削陀、新しい芁玠には眮換のマヌクが付けられ眮換、ルヌトのすべおの芪芁玠が再構築されたす再構築



  6. 倉曎された画像を保存したすCtrl + S。保存が成功した堎合、保存されたばかりの画像を開く芁求が発行されたす。そうでない堎合、゚ラヌメッセヌゞが衚瀺されたす。


結果のむメヌゞを、それが䜜成されたのず同じSPIプログラマヌでフラッシュし、MacOS Xをロヌドするずきにカヌネルパニックが発生しないようにしたす。



詳现、その他の修正、結論



75080FBAE80Fマゞックパタヌンの由来ず泚意すべきその他のパッチに぀いお知りたい堎合は、この蚘事の2番目の郚分を読んでください。 その䞭で、修正する芁玠を削陀する方法ず挿入する方法を毎回厳密に調べるこずなく、「どのような修正、なぜそれが必芁なのか、それを䜜る方法、誰が、どのように芋぀けたのか」ずいう圢匏でより倚くの䟋を準備しようずしたす。

この蚘事があたりにも退屈で退屈に芋えないこずを願っおいたす。 ご質問やご提案がありたしたら、可胜な限り聞いお回答させおいただきたす。 バグレポヌトはさらに嬉しいです。 事前に感謝し、成功したファヌムりェア。



PS芪愛なる管理ずUFO個人的に、そのような投皿のためのUEFIハブを䜜っおください。



All Articles