2

Я пытался извлечь содержимое прошивки и положить его в двоичный файл, но безуспешно.

Я вижу правильное шестнадцатеричное содержимое, но не уверен, как поместить их в биты в файл.

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 "]"}'

1 ответ1

6

Попробуй это:

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

Файл firmware.text должен содержать то, что вы хотите.


ОБНОВЛЕНИЕ: вышеуказанное должно работать, если файл прошивки имеет тот же формат, который используется на вашем компьютере (работает с objcopy). Если это не так, вы получите:

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

Затем вам нужно будет указать формат самостоятельно с помощью -I . Использование file скажет вам, в каком формате ваша прошивка, например:

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

И тогда (для этого случая, когда у вас ELF 32 с прямым порядком байтов) вам понадобится:

objcopy -j .text -O binary -I elf32-little firmware-arm.ko firmware-arm.text

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .