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ダンプデータの.binファイルを読み込ませます。

BIOSダンプファイルを開いたら、メニューのAction > Searchで検索ウインドウを出します。Text検索タブで"CFG Lock"を検索。

search
検索ダイアログ

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

検索結果
検索結果

BIOSダンプデータ構造のツリーが画面上部のペインに表示され、検索されたセクションが上展開します。今回検索された「PE 32 image sect_」のひとつ上の階層「Setup」を右クリックして、「Extract Body...」を選んでこのセクションを書き出します。保存したファイルの拡張子は.fbdです。

書き出し
.fbdを書き出し

これでBIOSのUI画面設定の部分を抽出することができました。

解析

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

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

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

% ifrextract Setup_body.fbd setup.txt

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

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

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