如何重新打包从设备固件中提取的 img 文件?

如何重新打包从设备固件中提取的 img 文件?

我有一台 DVR,但忘记了密码。尝试远程登录,从互联网获取凭据(我猜它们对于许多经销商来说都是相同的,因为制造商可能是相同的),JTR 密码。但这唤醒了我的好奇心,现在我只想为了好玩而搞乱固件。我尝试过添加一个自定义徽标,因为它非常愚蠢,并且可能会更改菜单语言,以便我家里的其他人也可以操作它。

固件以二进制文件形式提供。将其解压为 4 个 .img 文件。

  • 自定义-x.cramfs.img
  • 标志-x.cramfs.img
  • romfs-x.cramfs.img
  • 用户-x.cramfs.img

我无法安装它们,因为有一些标头字节添加到这些图像中MK图像,正如一些博客文章告诉我的那样。

文件这些图像之一(徽标)的命令输出:

logo-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 40960 bytes, Fri Jul  4 06:04:30 2014, Load Address: 0x00770000, Entry Point: 0x00780000, Header CRC: 0xBC5511F0, Data CRC: 0xC6BFF7D1

剥离 64 字节数据后DD我可以安装它并访问文件。试图添加一些垃圾文件只是为了生成不同的图像文件。在进行更改/添加文件后,我将如何继续重新打包已安装的 img?我应该如何重新添加我删除的 64 字节数据?

任何有帮助的想法都将受到赞赏。

答案1

我假设您想squashfs为 SPI 闪存创建映像。首先squashfs从您想要的目录创建图像:

mksquashfs yourdir romfs.squashfs -b 64K -comp xz

然后添加具有正确起始点和入口点的标头:

mkimage -A arm -O linux -C gzip -T kernel -a 0x50000 -e 0x430000 -n 'linux' -d romfs.squashfs romfs.squashfs.img 

相关内容