如何将修改后的固件恢复为只读安装

逆向工程 拆卸 linux 嵌入式
2021-06-23 01:02:38

通过插入 PCB 上的 UART,我设法在我的 Web 过滤路由器上获得了一个 root shell,这使我能够看到一个正在运行的处理大多数过滤功能的进程(lockbox.bin - ELF 可执行文件)。在提取 lockbox.bin 文件并使用 IDA pro 对其进行分析后,我对该文件进行了一些修改。我现在需要将它放回设备上以查看更改是否有效,但是当我尝试对文件系统进行更改时,我收到一条消息,指出文件系统是只读的。我想这只是将文件系统挂载为读/写的问题,但我不知道该怎么做(访问引导加载程序?)。设备上的 Busybox 实例缺少 mount 命令。有问题的路由器是重新命名的 realtek rtl8196b。

有什么建议?

免责声明:这是我第一次做这样的事情,所以我可能会遗漏一个非常基本的步骤。任何帮助,将不胜感激。

1个回答

固件很可能存储在squashfs压缩映像中(并且应该是只读的 - 它不能进行读写,但必须通过外部方式创建),squashfs 映像可能会被存储在某些闪存 ram 中,可以像/dev/mtbn在许多 linux 嵌入式设备上一样访问它,其中多个值n引用固件的不同部分(引导加载程序等)。

通常,引导加载程序本身位于 中/dev/mtb0,并且具有写入其他/dev/mtb块的命令

所以,你的行动方针是

  • 将各种/dev/mtb转储到文件中,检查哪个是 squashfs,或者可能是不同类型的文件系统,其中包含您的 lockbox.bin
  • 使用不同版本的 lockbox.bin 重建该文件系统,并希望它不会显着增大到超过/dev/mtb的大小
  • 检查如何从外部引导到引导加载程序,而无需启动 linux
  • 使用一些引导加载程序将该文件系统闪存到路由器
  • 重启路由器,希望你没有在这个过程中变砖。

正如你所说

这是我第一次做这样的事情

的机会

在此过程中将其变成砖块。

肯定非零,因此请谨慎行事。