ファームウェアの内容を抽出してバイナリファイルに入れようとしましたが、うまくいきませんでした。
正しい16進数の内容が表示されますが、それらをビット単位でファイルに配置する方法がわかりません。
objdump -s -j .text Firmware.ko |テール-n + 5 | awk '{print "dd if =' firmware.ko'of = 'content.bin'bs = 1 count = $ [" $ 2 $ 3 $ 4 $ 5 "]"}'
これを試して:
objcopy -j .text -O binary firmware.ko firmware.text
ファイルfirmware.text
には、必要なものが含まれているはずです。
PDATE:ファームウェアファイルがマシン(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