Extraia o conteúdo do ELF e grave no arquivo binário

1

Eu tenho tentado extrair o conteúdo de um firmware e colocá-lo em um arquivo binário, mas sem sucesso.

Eu vejo o conteúdo hexadecimal direito, mas não sei como colocá-los em bits em um arquivo.

objdump -s -j .text firmware.ko | tail -n +5 | awk '{print "dd if='firmware.ko' of='content.bin' bs=1 count=$["$2 $3 $4 $5 "]"}'
    
por Ursa Major 04.01.2014 / 02:18

1 resposta

6

Tente isto:

objcopy -j .text -O binary firmware.ko firmware.text

O arquivo firmware.text deve conter o que você deseja.

UPDATE: O acima deve funcionar se o arquivo de firmware estiver no mesmo formato que sua máquina (executando objcopy ) usa. Se não for o caso, você estará recebendo:

objcopy: Unable to recognise the format of the input file 'firmware-arm.ko'

Depois, você terá que especificar o formato com -I . Usar file dirá em qual formato seu firmware está, por exemplo:

$ file firmware-arm.ko
firmware-arm.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), BuildID[sha1]=0xec2e703615d915dd1cad09ecc12ff7d57ef186a5, not stripped

E então (para este caso, onde você tem um pequeno endian do ELF 32), você precisará:

objcopy -j .text -O binary -I elf32-little firmware-arm.ko firmware-arm.text
    
por 04.01.2014 / 12:35