![提取ELF内容并写入二进制文件](https://linux22.com/image/1392214/%E6%8F%90%E5%8F%96ELF%E5%86%85%E5%AE%B9%E5%B9%B6%E5%86%99%E5%85%A5%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6.png)
我一直尝试提取固件的内容并将其放入二进制文件中,但没有成功。
我看到了正确的十六进制内容,但不确定如何将它们按位放入文件中。
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
尝试这个:
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