この DOS exe BIOS アップデータから ROM ファイルを抽出するにはどうすればいいですか?

この DOS exe BIOS アップデータから ROM ファイルを抽出するにはどうすればいいですか?

DELL VOSTRO 260 BIOS をアップデートしようとしています。 なかなかうまくいきません。詳細については、以下を参照してください。

私は単純にフラッシュROMを直接抽出することにしました。フラッシュステップを実行しようとしているのではなく、単にexeからROMを抽出しようとしているだけです。したがって、exeをダウンロードし、dosemuを使用して実行しようとすると、次のようになります。

$ wget http://downloads.dell.com/FOLDER01639275M/1/MS-A10.exe
$ dosemu -dumb MS-A10.exe > log
$ cat log
SfxDos v2.11. [2012/06/25]
Extracting Files: [6174382 / 6174382] 100%  
Missing SMBIOS Table

これはどういう意味ですか? 誰かこれらの exe ファイルから実際のファームウェアを抽出できましたか? 動作するものは見つかりませんでした:

$ unrar l MS-A10.exe 

UNRAR 5.00 beta 8 freeware      Copyright (c) 1993-2013 Alexander Roshal

MS-A10.exe is not RAR archive

または

$ unzip -l MS-A10.exe 
Archive:  MS-A10.exe
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of MS-A10.exe or
        MS-A10.exe.zip, and cannot find MS-A10.exe.ZIP, period.

参考のために:

$ file MS-A10.exe 
MS-A10.exe: MS-DOS executable

この自己解凍型 DOS exe から ROM ファイルを抽出するにはどうすればよいでしょうか?

答え1

実際それは簡単で、単に wine で実行するだけです:

$ wine MS-A10.exe

出力は .wine ディレクトリにあります:

$ find $HOME/.wine | grep MS-A10
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AFUWIN.EXE
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AMIFLDRV.VXD
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AMIFLDRV64.SYS
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AMIFLDRV32.SYS
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/RosaBUU.exe
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/Pmxdll.dll
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/Idrvdll.dll
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/FWUpdLcl.exe
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/settings.ini
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/error.log
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/1176upd.BIN
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/AFUWINx64.EXE
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/RosaBUU.log
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/MS-A10.BIN
/home/mathieu/.wine/drive_c/users/mathieu/Temp/MS-A10/FWUpdLcl64.exe

と:

$ file MS-A10.BIN
MS-A10.BIN: Intel serial flash for PCH ROM

このBIOSアップデートをしようとしている人にとってはあまり興味がないと思いますが、Win7/32bits修復ディスクを使用することはできないことに注意してください(私はここ実際、実行時に必要な DLL には oledlg.dll が見つかる必要があります。

$ objdump -x RosaBUU.exe  | grep DLL
 vma:            Hint    Time      Forward  DLL       First
    DLL Name: dbghelp.dll
    DLL Name: KERNEL32.dll
    DLL Name: USER32.dll
    DLL Name: GDI32.dll
    DLL Name: COMDLG32.dll
    DLL Name: WINSPOOL.DRV
    DLL Name: ADVAPI32.dll
    DLL Name: SHELL32.dll
    DLL Name: COMCTL32.dll
    DLL Name: SHLWAPI.dll
    DLL Name: oledlg.dll
    DLL Name: ole32.dll
    DLL Name: OLEAUT32.dll

どうやらこの DLL は Win7/32 ビット修復ディスクには存在しないようです。

答え2

ROM を抽出するためのコマンドライン スイッチがあります (Windows が必要な場合があります)。

MS-A10.exe /writeromfile

答え3

EXE ファイルを追加パラメータ「-?」付きで実行した場合の出力は何ですか?
使用可能なコマンドライン オプションのリストが表示される場合があります。

DOS 用の古いバージョンの RAR で作成された場合、通常、「-x」は抽出のみを実行し、直後に BIOS フラッシャーを実行しようとしません。

とにかく、Linux 環境内から DOS ベースのフラッシュ ユーティリティを実行することはできません。これが、実際に表示されている SMBios メッセージの原因です。これは、BIOS チップが見つからないことを意味します。dosemu のようなエミュレータは役に立ちません。DOS コマンドにハードウェアへの必要な低レベル アクセスを与えることができません。

最良の選択肢は、FreeDOS で USB ブートスティックまたは起動可能な CD を作成し、そこから EXE を実行することと思われます。EXE を解凍する必要はまったくありません。(読み取り専用メディアから実行する場合は、FreeDOS を設定して RAM ディスクを作成し、そこから EXE を実行する必要があります。BIOS ファイルを抽出するには、書き込み可能な作業ディレクトリが必要です。)

関連情報