Wie extrahiere ich die ROM-Datei aus diesem DOS-exe-BIOS-Updater?

Wie extrahiere ich die ROM-Datei aus diesem DOS-exe-BIOS-Updater?

Ich versuche, das BIOS meines Dell Vostro 260 zu aktualisieren. Ich komme nicht weiter. Weitere Informationen finden Sie unter:

Ich habe mich entschieden, das Flash-ROM einfach direkt zu extrahieren. Ich versuche nicht, den Flash-Schritt auszuführen, sondern nur das ROM aus der EXE zu extrahieren. Wenn ich also die EXE herunterlade und versuche, sie mit Dosemu auszuführen, erhalte ich Folgendes:

$ 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

Was bedeutet das? Hat es jemand geschafft, die eigentliche Firmware aus diesen EXE-Dateien zu extrahieren? Ich konnte nichts finden, was funktioniert:

$ unrar l MS-A10.exe 

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

MS-A10.exe is not RAR archive

oder

$ 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.

Als Referenz:

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

Wie extrahiere ich die ROM-Datei aus dieser selbstextrahierenden DOS-EXE?

Antwort1

Eigentlich war das trivial, führen Sie es einfach unter Wine aus:

$ wine MS-A10.exe

Die Ausgabe finden Sie im Verzeichnis .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

mit:

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

Ich denke, das ist für jeden, der versucht, dieses BIOS-Update durchzuführen, nicht von Interesse. Sie sollten sich bewusst sein, dass die Verwendung einer Win7/32bits-Reparaturdiskette keine Option ist (ich habe die Anweisungen von befolgt).Hier). Tatsächlich erfordert die zur Laufzeit benötigte DLL, dass oledlg.dll gefunden wird:

$ 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

Anscheinend ist diese DLL auf einer Win7/32-Bit-Reparaturdiskette nicht vorhanden.

Antwort2

Es gibt einen Befehlszeilenschalter zum Extrahieren des ROM (erfordert möglicherweise Windows):

MS-A10.exe /writeromfile

Antwort3

Was ist die Ausgabe, wenn Sie die EXE-Datei mit dem zusätzlichen Parameter "-?" ausführen?
Möglicherweise erhalten Sie eine Liste verwendbarer Befehlszeilenoptionen.

Wenn es mit einer alten Version von RAR für DOS erstellt wurde, führt „-x“ normalerweise nur eine Extraktion durch, ohne zu versuchen, den BIOS-Flasher unmittelbar danach auszuführen.

Wie dem auch sei: Sie werden das DOS-basierte Flash-Dienstprogramm niemals in einer Linux-Umgebung ausführen können. Das ist tatsächlich die Ursache für die SMBios-Meldung, die Sie sehen. Es bedeutet, dass der BIOS-Chip nicht gefunden werden kann. Ein Emulator wie Dosemu wird nicht helfen. Er kann dem DOS-Befehl nicht den erforderlichen Low-Level-Zugriff auf die Hardware geben.

Die beste Option scheint zu sein, einen USB-Bootstick oder eine bootfähige CD mit FreeDOS zu erstellen und die EXE davon auszuführen. Dazu muss die EXE überhaupt nicht entpackt werden. (Wenn Sie von einem schreibgeschützten Medium aus arbeiten, müssen Sie FreeDOS so einrichten, dass eine RAM-Disk erstellt wird, und die EXE von dort ausführen. Es wird ein beschreibbares Arbeitsverzeichnis benötigt, in das die BIOS-Datei extrahiert wird.)

verwandte Informationen