我是电视维修技术人员,我发现损坏的固件是造成我工作的大部分电视故障的原因。我想到了一个想法,即如果我可以对固件进行逆向工程,那么我可能可以编写一个脚本,该脚本可以分析fw映像并确定其是否损坏。当前的方法涉及以15美元的价格购买预编程的eeprom,并且至少有一半的时间最终是浪费钱。不管固件是否损坏,在启动时都会收到相同的消息,基本上说一切正常。这使我相信问题出在文件系统上。这几乎就是我要坚持的地方。我尝试过binwalk,经过一段时间后,我能够提取并解压缩约3mb的LZMA压缩数据和一个JPG(即启动屏幕),但找不到文件系统。

在原始二进制文件上运行binwalk,我得到以下信息:

101602        0x18CE2         MySQL MISAM index file Version 4
145536        0x23880         LZMA compressed data, properties: 0x5D, dictionary size: 67108864 bytes, uncompressed size: 3126792 bytes
2246688       0x224820        JPEG image data, JFIF standard 1.02


由于某种原因,我似乎无法提取MISAM部分。 />在解压缩的LZMA部分上运行binwalk,我得到以下信息:

1484791       0x16A7F7        PARity archive data - file number 24064
1715704       0x1A2DF8        MySQL MISAM index file Version 4
1764734       0x1AED7E        Boot section Start 0x0 End 0x100


我尝试使用dd提取PARchive和boot节,但无法打开它们。我认为是由于拖尾垃圾。我使用了十六进制转储并搜索了魔术字节,但找不到任何字节。任何建议将不胜感激。如果有人想刺穿它,我也可以提供一份fw的副本。

评论

您能否详细说明“损坏的固件导致故障”的含义?您如何得出这个结论?此外,如果存在固件问题,我认为可以进行固件更新或服务还原来修复它。你尝试过吗?

请注意,由于binwalk扫描特定的字节序列(签名),所以误报可能是一个问题。签名扫描需要与其他分析方法结合使用,以便有意义

首先对固件二进制文件进行熵扫描,以确保是否存在任何压缩或加密区域。然后查看是否可以对已知好的固件二进制文件与可疑的损坏二进制文件进行比较,以找出它们在逐字节基础上的区别。也许您也可以与我们分享二进制文件

您是否尝试过将已知的优质芯片上的闪存转储并将图像闪存到损坏的芯片上?它起作用了吗?

这是固件映像。板上的SoC由MStar制造,根据他们的网站,他们为客户提供软件驱动程序和SDK,以便于自定义开发。这可能就是为什么我可以在无关品牌的图片中找到如此多相似之处的原因。而且,这些板似乎是由同一家公司设计的。我希望能够从提取的示例中重新创建SDK。