2007年10月16日
AWARD BIOS は比較的簡単であるが、AMI BIOS は(ちょっとだけ)難易度が高い。
ここ数年、AMI BIOS を採用している ASUSTEK製のマザーボード "P5B-Delux" のBIOSを改造してみる。
BIOSファイルをダウンロードし解凍すると、 P5B-ASUS-Delux-1216.ROM というファイルになる。
ちょっと長ったらしいファイル名なので、"P5BD-1216.ROM" というファイル名に変更する。
管理者モードでコマンドプロンプトを開き、USモードにする。
BIOSファイルより、"1B"モジュールを抜き出す。
実際のPCの物理メモリの内容をダンプするツールを起動する。
WindowsVista(x64)では HWDIRECT が動かなかった。
WinHEXを起動しても、Vista(x64)では覗けないので、WindwsXPに切り替えてWinHEXを起動する。
"CTRL+F"で検索画面を出し、"((pp(("の文字列検索を行う。
この場合のアドレスを確認する。 アドレスは、0xFF0EC である。
先ほど抽出した "1B" モジュールをバイナリエディタで読み込む。
同時に、"DELL.BIN" もバイナリエディタに読み込む。
"((pp(("の文字列検索を行い、"DELL.BIN" の貼り付け位置をきめて、貼り付ける。
貼り付けを開始したアドレスを 1バイト単位に区切り、逆順に並び替える。
物理メモリのアドレスを基準にして考える。
この場合、"((pp((" が 0xFF0EC なので、
0xFF110 → 10 F1 0F
"RSDT" の文字列を検索し、その直後の数値に +4 する。 0x28 → 0x2C
さらに、"DELL " , "M07 " を埋め込む。
さらに、"RSDT" の "R" の文字から 41 バイト目 (0x28 = 40なので) に
アドレスの "10 F1 0F" を埋め込む。
"XSDT" の文字列を検索し、その直後の数値に +8 する。 0x2C → 0x34
さらに、"DELL " , "M07 " を埋め込む。
さらに、"XSDT" の "X" の文字から 45 バイト目 に アドレスの "10 F1 0F" を埋め込む。
"1B" モジュールを上書き保存し、バイナリエディタを終了する。
コマンドプロンプトより、"1B" モジュールを書き戻す。
ASUS製マザーボード特有の処理として、"ASUSTEK" の文字列を特定の箇所に埋め込む必要がある。
P5B-Delux の場合、0x10000 のアドレスに埋め込んでやらなければいけない。
これをしないと、起動時に "OVER CLOCK ERROR" でまともに起動しなくなるのだ。
BIOSをアップデートしたら、OSを起動し、モジュールとアドレスを確認する。
投稿者 pikachu7500 : 2007年10月16日 22:05