BIOSの隠しメニューへアクセスして設定変更する方法(2) IFR情報の抽出

2023-02-04
  • B!

PC

初めてこのページを見た方へ:このページは連載の第2回目となります。最初のページはこちらです。

前回はBIOSのROMダンプデータを入手するところまで説明しました。

全体の手順をおさらいすると次の通りです。
  1. BIOSのROMデータのダンプを入手
  2. ダンプデータからUEFIのUI設定情報を取得
  3. 非表示のUI設定項目のアドレスを解析
  4. BIOSのUIを介さずにUEFIのCUIから直接BIOS設定を変更

前回で1.を説明したので、さっそく2.について書きます。

UI設定情報を抽出する

前回マザーボードから吸い出したBIOSデータを解析して、BIOS画面のUI情報を取り出します。

BIOSダンプを解析するツールUEFIToolをダウンロードします。

Windows版やmacOS用の実行バイナリが用意されているので、自分の環境に合うUEFIToolをダウンロードします。

UEFIToolを起動したら、前回入手したBIOSダンプデータのbios.binファイルを読み込ませます。

BIOSダンプファイルを読み込んだら、メニューのAction > Searchで検索ウインドウを出します。そしてText検索タブで"CFG Lock"を検索。

search
検索ダイアログ

検索結果が出たらウインドウ下の領域に表示されている検索結果をダブルクリック。すなわち下のスクショでは青くハイライトされているところになります。

検索結果
検索結果

先ほどのように項目をダブルクリックすると、BIOSダンプデータ構造のツリーが画面上部のペインに表示され、検索されたセクションが展開します。今回検索された「PE 32 image sect_」のひとつ上の階層「Setup」がBIOS設定画面のUI画面構造の情報が格納されているセクションですので、このデータを入手します。下のスクショのように先ほどの「Setup」セクションを右クリックして、「Extract Body...」を選んでこのセクションを書き出します。保存したファイルの拡張子は.fbdです。

書き出し
.fbdを書き出し

これでBIOSのROMダンプバイナリからUI画面設定の部分だけを抽出することができました。これで冒頭で説明した手順「2.ダンプデータからUEFIのUI設定情報を取得」の作業が完了しました。

解析

この取り出したUI設定情報のバイナリからBIOS設定画面の構造を解析して画面に表示されないメニューへのアクセス場所を把握します。全体の作業工程の手順でいうと3番目に当たります。

  1. BIOSのROMデータのダンプを入手
  2. ダンプデータからUEFIのUI設定情報を取得
  3. 非表示のUI設定項目のアドレスを解析
  4. BIOSのUIを介さずにUEFIのCUIから直接BIOS設定を変更
では前の工程で取得した.fdbファイルを解析します。ツールはIFR Extractorを使います。

今回はmacOS版をダウンロードして実行します。操作はコマンドラインです。

% ifrextract Setup_body.fbd setup.txt

これで前の工程で取得した.fdbファイルを解析して、人間が読めるテキストの設定書式に変換したsetup.txtを取り出せます。これで出力されたテキスト情報の書式は、UEFI Internal Form Representation (IFR)と言います。UEFIのファームウェアのアーキテクチャには設定画面の画面機能を定義するUEFI Human Interface Infrastructure (HII) subsystemがあります。その中でメニュー画面描画の設定をIFRで記述します。

ここでちょっと余談。最新版ではないですが、IFRの文法仕様はインテルが公開しています。主要な文法構造はHTMLに例えて説明されているところが興味深いです。

ここまでデータを集めてようやくBIOSの隠し設定を操作できるようになります。先ほど取得したIFR情報を参考にしながら、いよいよ次回はコマンドでBIOS設定を変更します

Profile

Profile header image


ampspeed

炎上している開発プロジェクトの火消し屋をやってます。

サイト内検索