在 Ghidra 中分析STM32裸机固件

Ghidra中文版下载

原版下载

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

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

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

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

安装

下载地址:https://github.com/NationalSecurityAgency/ghidra

在github里下载后进入文件夹,安装java环境:jdk-24版本

然后运行工具ghidraRun.bat

运行后会出现这个黑色的框框

将我们准备好的jdk文件根目录复制上去,然后回车

将我们准备好的jdk文件根目录复制上去,然后回车

如果出现这个界面的话就是配置成功

如图所示,我们只需保留主程序窗口就可以了

创建项目

  • 在初始界面左上角选择File->New Project...(也可以使用快捷键Ctrl+N)
  • 选择Non-Shared Project,单击Next(另一个选择Shared Project是会在本地监听一个端口,方便分享)
  • 设置项目的保存路径项目的名称 ,设置完成后点击Finish即可

导入项目文件

  • 可以选择左上角的File->Import File...(也可以直接将文件拖拽进Ghidra中)

设置导入文件的信息

STM32F103 是一系列基于ARM Cortex-M3处理器的微控制器。而Cortex-M3 是一款 32 位处理器,默认内存端模式是小端模式。点击"语言选项"按钮,并将语言设置为"ARM-Cortex-32-little"。

配置后,单击OK按钮即可

  • 完成上述步骤后,Ghidra会进行自动分析,等待一段时间(取决于反编译软件的复杂程度),Ghidra会显示出反编译软件的相关信息

打开项目

  • 将反编译的软件拖拽进Ghidra的CodeBrowser(左上角的龙图标)
  • 首次打开,会提示是否对反编译软件进行分析,单击Yes,接着单击Analyze

我们现在可以继续加载文件并双击在反汇编程序中打开。

  • 等待一段时间就可以得到反编译结果了

Ghidra 分析提示

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

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

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

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

怎么找到函数

我们可以找到左边的functions,找到entry(当然有些程序直接有main,或者_start等关键字)

通过Filter搜索可以更快一点,双击即可再右边看到entry代码

相关推荐
Szime7 小时前
全球首创10位40GSPS超宽带ADC选型参考:国产超高速ADC深智微科技选型支持
科技·单片机·嵌入式硬件·fpga开发
(Morgan)8 小时前
51单片机期末复习知识点总结
stm32·单片机·嵌入式硬件
榴莲llll10 小时前
应用于计时器/微波炉等产品的高亮LED数显驱动VK16K33C 数码管屏显驱动芯片
单片机
华一精品Adreamer11 小时前
T606 vs 骁龙662/RK3566:主流安卓+4G定制平板芯片横向测评指南
单片机
Zyed11 小时前
[STM32]Day9-Part1USART+串口接收+串口收发
stm32·单片机·嵌入式硬件
小慧102413 小时前
手动建立工程模板
stm32·单片机
嵌入式ZYXC14 小时前
STM32烧录一次后无法再次烧录的两种原因
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑15 小时前
嵌入式测试学习第33 天:压力测试、反复开关机、反复插拔接口测试
单片机·嵌入式硬件·学习
布子麟16 小时前
NodeMcu(ESP8266)之更新固件
单片机·物联网·iot
开发笔记-阿牛16 小时前
CK6159A 可靠性测评:芯片工艺、环境测试与量产稳定性分析
stm32·单片机·嵌入式硬件