在 Ghidra 中分析裸机固件二进制文件

在本文中,我们将分析 Ghidra 中的 STM32 固件二进制文件。该固件适用于意法半导体的 STM32F103C 开发板。

该文件可以从此链接下载。

分析固件二进制文件通常与分析 PE 或 ELF 文件不同。PE(可移植可执行文件)是 Windows 上的标准可执行文件格式。.exe文件是底层的 PE。PE 文件格式适用于 32 位 Windows 系统。PE64 文件格式与 PE 类似,但适用于 64 位系统。

相应地,在 Linux 上,我们有 ELF(可执行和可链接格式)文件,其用途相同。这两种文件格式都具有明确的结构。它们都有一个文件头,描述了文件在执行时在内存中的存放方式。文件头中提供了代码段和数据段的地址。Ghidra 等反汇编程序会利用这些信息自动区分代码段和数据段,并将文件加载到正确的地址。

另一方面,扁平固件文件只是一个二进制 blob,一堆字节,没有文件头或描述文件布局的元数据。在检查此类文件时,分析师必须亲自将信息提供给 Ghidra。

初步分析

让我们继续在 Ghidra 中加载固件。由于它是一个原始二进制文件,Ghidra 不知道如何处理它。

在 Ghidra 中加载固件在 Ghidra 中加载固件

STM32F103 是一系列基于ARM Cortex-M3处理器的微控制器。Cortex-M3 是一款 32 位处理器。点击“语言选项”按钮,并将语言设置为“ARM-Cortex-32-little”。

指定语言和编译器规范指定语言和编译器规范

保留其他选项不变,我们现在可以继续加载文件并双击在反汇编程序中打开。

Ghidra 分析提示Ghidra 分析提示

Ghidra 将提示分析文件,我们点击“是”,保留默认分析选项。分析完成后,我们来看看反汇编的代码。

Ghidra 中未解析的地址以红色标记Ghidra 中未解析的地址以红色标记

我们注意到,有几个地址用红色文本标记。这些地址的形式为08000XXX。当文件中不存在指定的地址时,Ghidra 会将其标记为红色。双击该地址不会有任何结果。

FUN_000003e4类似地,让我们通过在符号树上单击任何函数(比如)来分析它的反汇编列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值