意识到这是一个广泛的问题,但是尽管谷歌搜索已经有好几天了,但我还没有找到有关如何从硬件“捕获”或复制未知固件的一般原理的直接解释。

一旦我收集了它,就可以开始使用各种工具进行分析,但是我想了解的是如何首先获得它。

据我了解,您需要通过JTAG或UART连接连接到它,此后我有点迷路了。

评论

我想购买这个工具。我们能否提供更多价格/单位的详细信息。谢谢

#1 楼

您可能会怀疑,这很大程度上取决于硬件。通常,您是对的,通常可以使用JTAG和/或UART来获取固件的副本(当然,从供应商处下载固件更新通常是最简单的方法,但是我假设那不是您所需要的)。意思)。

JTAG实现通常允许您读取/写入内存,并且闪存芯片通常被“映射”到某个预定义地址的内存中(发现该地址通常是Google搜索,经验和试用的问题)和错误);因此,您可以使用UrJTAG和OpenOCD之类的工具读取flash的内容。

UART只是一个串行端口,因此它提供什么接口或选项(如果有)完全取决于开发人员。创建系统;大多数引导加载程序(例如U-Boot)都允许您读取/写入闪存/内存,并将ASCII十六进制转储到终端窗口。然后,您将需要解析十六进制转储并将其转换为实际的二进制值。同样,YMMV可能无法通过UART来转储内存或闪存。

其他设备可能具有提供类似功能的其他机制。例如,Microchip的PIC微控制器使用ICSP(在线串行编程)接口来读取,写入和调试固件。此类接口通常是专有的,并且可能没有记录(Microchip的记录是众所周知的)。供应商可能会采取措施保护或禁用JTAG,UART和ICSP等调试接口,但是通常您可以直接转储闪存芯片(通常比JTAG / UART快,但可能需要一些解焊/焊接)。对于诸如内置闪存芯片的微控制器之类的设备(即闪存芯片没有暴露给您),您可能需要诉诸更先进的技术来克服这种复制保护。

就我个人而言,由于我对基于微控制器的系统处理不多,因此直接转储闪存芯片通常是从设备中获取固件副本的首选。

评论


+1确实取决于硬件。尝试在网络上搜索一种设备,该设备具有设计规范及所有功能,可在NDA下使用,但不再可用。从经验上讲。

– 0xC0000022L♦
2014年1月23日23:39

#2 楼

提取硬件芯片的内容称为“自封”。 (该术语可能对您的Google搜索有所帮助。)

要获取芯片的内容,您需要ROM读取器/编程器,例如http://www.needhams中的一种设备。 com / programmers.htm