Como faço para extrair o arquivo ROM deste atualizador do BIOS DOS exe?

0

Estou tentando atualizar meu BIOS DELL VOSTRO 260. Eu estou lutando para chegar a algum lugar, veja para mais informações:

Eu decidi simplesmente extrair o flashrom diretamente. Eu não estou tentando executar o passo piscando, simplesmente para extrair a ROM do exe. Então, se eu baixar o exe e tentar executá-lo usando o dosemu, aqui está o que eu recebo:

$ 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

O que isso significa? Alguém conseguiu extrair o firmware real desses exe? Não encontrei nada que funcionasse:

$ unrar l MS-A10.exe 

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

MS-A10.exe is not RAR archive

ou

$ 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 referência:

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

Como faço para extrair o arquivo ROM deste exe de extração automática do DOS?

    
por malat 28.10.2014 / 15:51

3 respostas

2

Na verdade isso foi trivial, basta executá-lo com vinho:

$ wine MS-A10.exe

A saída será encontrada no diretório .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

com:

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

Eu acho que isso tem pouco interesse para qualquer um tentando fazer essa atualização do BIOS, você deve estar ciente de que o uso de um disco de reparação Win7 / 32bits não é uma opção (eu segui as instruções de aqui ). Na verdade, a DLL necessária em tempo de execução requer que oledlg.dll seja encontrado:

$ 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, essa DLL não está presente em um disco de reparo do Win7 / 32bits.

    
por 28.10.2014 / 17:50
1

existe uma opção de linha de comando para extrair a ROM (pode exigir o Windows):

MS-A10.exe /writeromfile
    
por 28.12.2016 / 10:46
0

Qual é a saída quando você executa o arquivo EXE com o parâmetro extra "-?" ?
Você pode obter uma lista de opções de linha de comando utilizáveis.

Se for feito com uma versão antiga do RAR para DOS, normalmente "-x" faria apenas um extrato, sem tentar executar o pisca-pisca da BIOS imediatamente depois.

De qualquer forma: Você nunca poderá executar o utilitário flash baseado em DOS dentro de um ambiente Linux. Isso está realmente causando a mensagem do SMBios que você está vendo. Isso significa que não é possível localizar o chip da BIOS. Um emulador como o dosemu não ajuda. Não pode dar ao comando DOS o acesso de baixo nível necessário ao hardware.

A melhor opção seria criar um dispositivo de boot USB ou CD inicializável com FreeDOS e executar o EXE a partir dele. Isso não exigirá descompactar o EXE em tudo. (Quando executado a partir de mídia somente leitura, você terá que configurar o FreeDOS para fazer um disco RAM e executar o EXE a partir dele. Ele precisará de um diretório de trabalho gravável para extrair o arquivo do BIOS.)

    
por 28.10.2014 / 17:22