mnaberez/f2mc8dump

GitHub: mnaberez/f2mc8dump

利用 F2MC-8L 微控制器的外部总线特性,通过硬件电路与配套固件提取通常无法访问的内部 ROM 代码。

Stars: 16 | Forks: 3

# f2mc8dump ![照片](https://static.pigsec.cn/wp-content/uploads/repos/cas/40/40ca6b702148aa97737308f85e972803cedb774a01e2f3d1e9215aa1e2be5f54.png) ## 概述 某些 Fujitsu F2MC-8L 微控制器具有 外部总线能力(参见[目录](https://web.archive.org/web/20170514004456/http://www.fujitsu.com/downloads/MICRO/fme/micros/micros_2006.pdf))。 我发现外部总线可用于转储通常无法访问的 内部 ROM 内容。 通过一个 mode 引脚可以启用外部总线。在此模式下,内部 ROM 被禁用,其地址空间被重定向 到外部总线。我通过连接一个将转储程序写入 RAM 的外部 EPROM,然后跳转到 RAM,转储了几个 F2MC-8L 微控制器的内部 ROM。当代码从 RAM 执行时,我更改了 mode 引脚。外部总线被禁用,内部 ROM 被启用,但代码继续从 RAM 执行并转储出了内部 ROM 的内容。 ## 测试 我开发这种方法是为了提取由 Clarion 制造的[Volkswagen Premium IV](https://github.com/mnaberez/vwradio)汽车音响的固件。这些音响包含以下微控制器: - MB89623R - MB89625R - MB89677AR 我成功提取了它们所有的内部 ROM 代码。我也测试了来自其他产品的上述芯片样品,并同样能够从中提取代码。 ## 硬件 硬件设置需要将 F2MC-8L 微控制器从 目标设备中移除。它被放置在一个带有以下其他组件的电路板上: - 2764 或类似的带有转储固件的并行 EPROM - 74HCT373 透明锁存器 - 74HCT138 3-8 译码器 - 5V TTL 振荡器 (1-8 MHz) - 5V 稳压器、去耦电容、上拉电阻等。 有关详细信息,请参阅 `hardware/` 目录。 需要一个带有 9 个探针(8 条数据线,1 条选通线)的逻辑分析仪来 捕获转储硬件的输出。 ## 固件 使用 [asf2mc8](http://shop-pdp.net/ashtml/asf2mc.htm) 汇编器汇编 `firmware/` 目录中的转储固件,并将其烧录到 EPROM 中。 ## 转储 构建硬件并以其外部总线模式启动(MOD0=Vcc)。它将 立即开始通过 P30-P37 转储内存空间,并在 每个字节后在 P40 上输出 /STROBE 信号。它将循环遍历内存并不断进行转储。如果你 使用逻辑分析仪捕获它,你将看到来自 转储固件的字符串 `EXTERNALROM`。 在保持通电的情况下,将 MOD0 更改为 Vss。这将选择内部 ROM 模式。程序将继续转储,但现在它将转储的是 内部 ROM。使用逻辑分析仪捕获输出,并让 其运行几分钟,以便整个内存空间被转储几次。 将捕获内容保存到文件中。 使用 `host/` 目录下的 Python 脚本,从逻辑分析仪捕获的内容中分离出单个 ROM 镜像。 ## 反汇编 获取二进制文件后,使用 [f2mc8dasm](https://github.com/mnaberez/f2mc8dasm) 对其进行反汇编。 ## 作者 [Mike Naberezny](https://github.com/mnaberez)
标签:云资产清单, 固件提取, 嵌入式系统, 微控制器, 硬件, 硬件安全, 自动回退, 逆向工具, 逆向工程