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

0

Estoy tratando de actualizar mi BIOS DELL VOSTRO 260. Estoy luchando para llegar a cualquier parte, ver más información:

Decidí simplemente extraer el flashrom directamente. No estoy intentando ejecutar el paso de parpadeo, simplemente extraer la ROM del archivo ejecutable. Entonces, si descargo el exe y trato de 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 archivos ejecutables? No pude encontrar nada trabajando:

$ 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 de DOS autoextraíble?

malat
fuente
¿Qué significa qué? No podrás extraer un ejecutable de MS-DOS. Los errores son bastante claros con los que no trabajas en un archivo.
Ramhound
En realidad, es "PE32 ejecutable (GUI) Intel 80386, para MS Windows", por cierto. ;) Además, Internet no conoce "SfxDos", probablemente algo de DELL Homebrew solución.
Daniel B
@ daniel-b ¿cómo viste que es un exe PE32 (GUI)?
malat
Esa es la salida de Cygwin y Gentoo. file mando. Supongo que los archivos mágicos de tu distribución no son tan buenos.
Daniel B

Respuestas:

2

En realidad eso fue trivial, simplemente ejecutarlo 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 hacer esta actualización de BIOS, debe tener en cuenta que usar un disco de reparación de Win7 / 32bits no es una opción aquí ). De hecho, la DLL necesaria en el 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

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

malat
fuente
1

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

MS-A10.exe /writeromfile
Martin Zeitler
fuente
0

¿Cuál es la salida cuando ejecuta el archivo EXE con el parámetro extra "-?" ?
Puede obtener una lista de opciones de línea de comandos utilizables.

Si está hecho con una versión antigua de RAR para DOS, generalmente "-x" haría un extracto solamente, sin intentar ejecutar el intermitente BIOS inmediatamente después.

De todas formas: Nunca podrá ejecutar la utilidad flash basada en DOS desde un entorno Linux. 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 dar al comando de DOS el acceso de bajo nivel necesario al hardware.

La mejor opción sería crear un dispositivo de arranque USB o un CD de inicio con FreeDOS y ejecutar el EXE desde ahí. Eso no requerirá desempaquetar el EXE en absoluto. (Cuando se ejecute desde medios de solo lectura, deberá configurar FreeDOS para crear un disco RAM y ejecutar el EXE desde allí. Necesitará un directorio de trabajo de escritura para extraer el archivo de BIOS).

Tonny
fuente