¿Cómo extraigo el archivo ROM de este actualizador de BIOS exe de DOS?

¿Cómo extraigo el archivo ROM de este actualizador de BIOS exe de DOS?

Estoy intentando actualizar mi BIOS DELL VOSTRO 260. Estoy luchando por llegar a cualquier parte, consulte para obtener más información:

Decidí simplemente extraer el flashrom directamente. No estoy intentando ejecutar el paso de actualización, simplemente extraer la ROM del exe. Entonces, si descargo el exe e intento ejecutarlo usando dosemu, esto es lo que obtengo:

$ 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

Qué significa esto ? ¿Alguien ha logrado extraer el firmware real de esos exe? No pude encontrar nada que funcione:

$ unrar l MS-A10.exe 

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

MS-A10.exe is not RAR archive

o

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

Para referencia:

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

¿Cómo extraigo el archivo ROM de este exe autoextraíble de DOS?

Respuesta1

En realidad, eso fue trivial, simplemente ejecútelo bajo vino:

$ wine MS-A10.exe

La salida se encontrará en el directorio .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

con:

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

Supongo que esto tiene poco interés para cualquiera que intente realizar esta actualización del BIOS, debe tener en cuenta que usar un disco de reparación de Win7/32 bits no es una opción (seguí las instrucciones deaquí). De hecho, la DLL necesaria en tiempo de ejecución requiere que se encuentre 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

Aparentemente, esta DLL no está presente en un disco de reparación de Win7/32 bits.

Respuesta2

Hay un modificador de línea de comandos para extraer la ROM (puede requerir Windows):

MS-A10.exe /writeromfile

Respuesta3

¿Cuál es el resultado cuando ejecuta el archivo EXE con el parámetro adicional "-?" ?
Es posible que obtenga una lista de opciones de línea de comandos utilizables.

Si está hecho con una versión antigua de RAR para DOS, entonces normalmente "-x" haría solo una extracción, sin intentar ejecutar la actualización del BIOS inmediatamente después.

De todos modos: nunca podrá ejecutar la utilidad flash basada en DOS desde un entorno Linux. En realidad, eso está causando el mensaje SMBios que estás viendo. Significa que no puede localizar el chip BIOS. Un emulador como dosemu no ayudará. No puede darle al comando DOS el acceso de bajo nivel necesario al hardware.

La mejor opción parecería ser crear una memoria USB de arranque o un CD de arranque con FreeDOS y ejecutar el EXE desde allí. Eso no requerirá descomprimir el EXE en absoluto. (Cuando se ejecuta desde un medio de solo lectura, tendrá que configurar FreeDOS para crear un disco RAM y ejecutar el EXE desde allí. Necesitará un directorio de trabajo grabable para extraer el archivo BIOS).

información relacionada