web-dev-qa-db-ja.com

ELFの内容を抽出し、バイナリファイルに書き込みます

ファームウェアの内容を抽出してバイナリファイルに入れようとしましたが、うまくいきませんでした。

正しい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 "]"}' 
2
Ursa Major

これを試して:

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
6
nickie