Как извлечь файл ROM из этого DOS exe-апдейтера BIOS?

Как извлечь файл ROM из этого DOS exe-апдейтера BIOS?

Я пытаюсь обновить BIOS моего DELL VOSTRO 260. Я не могу ничего сделать, для получения дополнительной информации см.:

Я решил просто извлечь flashrom напрямую. Я не пытаюсь запустить шаг перепрошивки, просто извлечь ROM из exe. Так что если я скачаю 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

Как извлечь файл ROM из этого самораспаковывающегося exe-файла DOS?

решение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/32bit.

решение2

Для извлечения ПЗУ имеется ключ командной строки (может потребоваться Windows):

MS-A10.exe /writeromfile

решение3

Что выводится при запуске EXE-файла с дополнительным параметром "-?" ?
Вы можете получить список используемых параметров командной строки.

Если он создан с помощью старой версии RAR для DOS, то обычно «-x» выполняет только извлечение, без попытки немедленно запустить программу перепрошивки BIOS.

В любом случае: вы никогда не сможете запустить DOS-based flash-utility из среды Linux. Это на самом деле является причиной сообщения SMBios, которое вы видите. Это означает, что он не может найти чип BIOS. Эмулятор типа dosemu не поможет. Он не может предоставить команде DOS необходимый низкоуровневый доступ к оборудованию.

Лучшим вариантом, по-видимому, будет создание загрузочной флешки USB или загрузочного CD с FreeDOS и запуск EXE с него. Это вообще не потребует распаковки EXE. (При запуске с носителя только для чтения вам придется настроить FreeDOS для создания RAM-диска и запуска EXE оттуда. Для извлечения файла BIOS потребуется доступный для записи рабочий каталог.)

Связанный контент