哈曼卡顿固件逆向工程

逆向工程 固件 固件分析 垃圾桶
2021-06-23 10:50:20

首先,我对逆向工程很陌生,但我了解十六进制、二进制、操作码等。

我正在尝试对 Harman Kardon 固件文件进行逆向工程,因为我认为固件中隐藏了一些可能对家庭自动化有用的 API 调用。

出于某种原因,binwalk 只说固件中有一个 XML 文件(但没有提取它)。而且里面好像有一些MIPS16e指令,不知道怎么提取。

binwalk -AB 输出:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
504842        0x7B40A         MIPS16e instructions, function prologue
777848        0xBDE78         XML document, version: "1.0"

我还检查了文件中的其他文本(在其中)。因此,我认为它没有加密。“XML 文档”只是这个:<?xml version="1.0" encoding="UTF-8"?><harman><avr><common><status><name>.

之后,仅显示设备菜单中可以看到的其他随机文本。

我不知道这里转储固件是否可以,所以除非有人要求,否则我不会。

如何进行逆向工程?

2个回答

如果您strings使用固件文件运行,通常可以获得很多有用的信息。在这种情况下,由于我不知道你的设备是什么,而不是 Harman Kardon “某物”,我在文本编辑器中搜索了字符串,直到找到了一行

用户代理:Harman Kardon AVR151/AVR1510

为了仔细检查固件是否属于 Harman Kardon AVR151/1510,我从他们的网站下载了最新版本,并在该固件和您链接的固件之间进行了二进制差异。奇怪的是,你链接的固件和 Harman Kardon 网站上的固件只有文件中的第一个字节不同;每个文件中的其余字节都是相同的。

找出其中的处理器可能很棘手。你可以把它拆开看看,但你可能不需要(如果它在保修期内,那可能是一个冒险的提议,但同样可以修改固件......)对于很多设备,你可以通过搜索获取​​内部照片,FCC [device name]因为在美国使用无线电频谱的设备必须通过 FCC 认证。该系列接收器的 FCC 页面提供了内部照片,但它们的分辨率太低,无法弄清楚里面有什么 IC。下一步是搜索AVR151 teardownAVR151 repair因为对于大多数设备,有人已经打开它并试图修复它。在这种情况下,我找到了一个youtube 视频有人在 AVR151 上进行板级维修,大约 8 分 44 秒,您可以看到主逻辑板的一张照片,其中显示了其上的所有组件:

来自 YouTube 视频的屏幕截图显示了 AVR-151 的逻辑板和可见的 IC

左下角的 STM32 似乎是板上的主要可编程 IC,其部件号为 STM32F205Z6T6 ( pdf )。Analog Devices 芯片连接到后面板上的 HDMI 端口,它是一个 ADV7623 HDMI 收发器(您还可以strings在固件文件输出中找到对 ADV7623 的几个参考。)ESMT 芯片是一个 SDRAM,而 CS497024 是一个音频DSP。右侧被切断的芯片是另一个音频 DSP 和 Frontier Silicon Chorus FS1230,它看起来像一个用于集成音频调谐器和其他设备的 SoC,因为它连接到 RF 前端以及显示器,非- 易失性存储、网络等(pdf)。我相信它也是可编程的,但除了那个数据摘要 PDF,我在芯片上找不到太多信息。

如果您查看 STM32F205Z6T6 的数据表,它有 1MB 的闪存,但您发布的固件文件是 3MB,因此该文件中可能不仅仅是 STM32 固件。如果您分析发布的固件中的熵,您会看到几个不同的高熵区域(图像,链接,因为它非常高)* 由表示为白色块的空白空间分隔,所以我猜是引导加载程序的代码区域,STM32F205 的主要固件的另一个区域,可能还有一些可以写入非易失性存储器的数据、FS1230 的固件/配置或任何其他内容,不一定按此顺序。

如果您查看偏移量 0xFFFFF(1MB,或 STM32F205 闪存的大小)处的文件,您会看到空白数据和一些新数据的开始之间有一个非常明显的中断,所以我猜这可能是固件停止并开始其他数据的位置。也就是说,同样的事情发生在偏移量 0x1FFFFF (2MB) 处,所以你必须做一些进一步的分析。看:

显示 1MB 数据中断的十六进制编辑器的屏幕截图

显示 2MB 数据中断的十六进制编辑器的屏幕截图

如果你真的想深入挖掘,我之前链接的 youtube 视频中的描述声称提供了 AVR151 的工厂服务手册,尽管我不确定它是如何获得的,所以我不会在这里链接;同样,有了这里的信息,再加上提供的固件,我想你应该有一个很好的开始。我相信 Igor Skochinsky 说至少其中一些提供的固件文件是该 STM32F205 的代码(或者至少,如果不是,我会感到惊讶)是正确的,尽管我没有深入了解将其加载到某个工具集中并进一步使用它。

我的直觉是,大多数有趣的事情都发生在 FS1230 中,并且很难获得该芯片上的信息,因此您可能很难破译那里发生的事情或确定如何修改固件或对其进行逆向工程而无需数据表或参考手册。也就是说,二进制文件中有很多有趣的字符串,您现在对 AVR-151 内部的内容有了相当多的了解,所以我认为您应该有很多东西可以继续。

*特别感谢scanlime的生成 pgm 文件以可视化文件熵的技术:

(echo "P5 512 4096 255"; cat ./avr.fw) > avrfw.pgm

似乎是 Cortex-M(ARM Thumb-2 代码),负载基址 0x8000000。我猜这是一些 STM32 模型。

在此处输入图片说明