提取ELF的内容并写入二进制文件

Urs*_*jor 2 linux awk dd tail binary-files

我一直在尝试提取固件的内容并将其放入二进制文件,但没有成功。

我看到了正确的十六进制内容,但不确定如何将它们按位放入文件中。

objdump -s -j .text firmware.ko | 尾 -n +5 | awk '{print "dd if='firmware.ko' of='content.bin' bs=1 count=$["$2 $3 $4 $5 "]"}'

nic*_*kie 6

尝试这个:

objcopy -j .text -O binary firmware.ko firmware.text
Run Code Online (Sandbox Code Playgroud)

firmware.text然后该文件应包含您想要的内容。


更新: 如果固件文件的格式与您的机器(正在运行objcopy)使用的格式相同,则上述内容应该有效。如果不是这种情况,您将获得:

objcopy: Unable to recognise the format of the input file `firmware-arm.ko'
Run Code Online (Sandbox Code Playgroud)

然后你必须自己指定格式-I。使用file将告诉您固件的格式,例如:

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

然后(对于这种情况下,你有一个 ELF 32 小端)你需要:

objcopy -j .text -O binary -I elf32-little firmware-arm.ko firmware-arm.text
Run Code Online (Sandbox Code Playgroud)