嵌入式设备逆向所需的工具链

这篇具有很好参考价值的文章主要介绍了嵌入式设备逆向所需的工具链。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导语:本文介绍了嵌入式设备逆向所需的工具链。

相关的应用程序或工具有:

UART(Universal Asynchronous Receiver Transmitter,通用异步收发器):

UBoot;

Depthcharge;

SPI (Serial Peripheral Interface,串行外设接口):

Flashrom;

I2C(Inter-Integrated Circuit,集成电路总线):

i2cdetect;

i2cdump;

JTAG (Joint Test Access Group,联合测试接入组)

OpenOCD;

UrJTAG;

除了使用上述协议提取固件外,我们还将使用 Ghidra 分析二进制文件,其中我们将涵盖以下内容:

将二进制块加载到 Ghidra;

了解 Ghidra 的 FlatProgramAPI:Java / Python;

增强 Ghidra 的自动分析;

理解Ghidra中的内存映射;

PCode仿真;

本文回顾了在建立嵌入式系统逆向工程实验室时所需要的一些工具。有两个部分,一个是硬件工具,一个是软件工具。阅读完本文后,你应该知道为逆向工程嵌入式系统和固件映像建立一实验环境需要什么。

让我们介绍一下将要使用的一些工具。

硬件

为了连接和分析本文中的逆向目标,我们将使用以下工具:

树莓派模型4;

FX2LA逻辑分析仪;

万用表;

RD6006电源;

Breadboard Wire 跳线;

烙铁;

Raspberry Pi

Raspberry Pi是一款基于linux的SBC(单板计算机),拥有多种外设。直到最近,对于许多嵌入式系统项目来说,Raspberry Pi 还是一种易于获取的低成本解决方案。

它利用Broadcom BCM2711,四核Cortex-A72 (ARM v8) 64位SoC @ 1.5GHz,并且有多种型号可供选择,可用外设,当然还有成本! Pi 最初是一个教育平台,但制造商和黑客都喜欢这个平台,并找到了很多方法来利用这个基于 Linux 的低成本 SBC。我发现 Raspberry Pi 在过去几年中已成为我的首选多功能工具,这主要是由于它支持的接口数量,如下图所示。
嵌入式设备逆向所需的工具链
我们将使用这个平台来插入和连接各种嵌入式系统总线和外设。除了包含许多嵌入式系统上的标准外设外,它还运行 Linux!这使我们能够利用许多开源工具,甚至编写我们的程序来与这些外设进行交互。我们可以这样做,因为这些接口是通过 /dev/ 中的文件系统公开的。我们将是基于 Debian 的标准 Raspbian 映像,每一篇文章都将介绍如何配置Pi的相关接口。

电源:RD6006

在完成我们的目标时,我们需要从外部为它们提供动力。因此,无论我们是要为闪存芯片或微控制器等单个组件还是我们的整个平台供电,我们都需要一个可调节的电源。

Riden 6006 是一款可变台式电源,可根据你要使用的电源处理 6-70v 的输入电压。此电源要求你连接电源;对于我的台式设置,我使用连接到 RIDEN 6006 背面的 12V / 3A 交流适配器,如下所示:
嵌入式设备逆向所需的工具链
该电源具有十个可编程预设(电压/电流设置),可通过 USB 或 WiFi 远程控制。

以下 python 片段显示了控制此电源是多么简单。
嵌入式设备逆向所需的工具链
使用连接WiFi的版本,移动应用程序可以远程控制电源。需要以编程方式控制我们的电源,以防我们需要运行重复测试,我们循环电源到目标。第一部分中有一个示例:

Riden Link: Amazon

Riden Link: AliExpress

万用表

万用表是任何硬件实验室的必备品,万用表执行电子测量,例如:

电压(交流和直流);

当前的;

电阻;

连续性;

不同的万用表的成本和功能差异很大,选择万用表时需要注意的一些因素包括:

用于什么目的?

手动还是自动?

可用的测量方法是什么?

就我们的目的而言,我们不需要一个非常昂贵的万用表,因为我们将主要测量连续性、电压和电阻。需要注意的是,一些便宜的万用表比其他万用表需要更多的时间来测量,从而导致一些滞后。

逻辑分析仪

硬件黑客工具箱中另一个常用的工具是逻辑分析仪。逻辑分析仪捕获并显示数字电路中的电子信号。逻辑分析仪还可以解码和分析这些信号,将数字数据流转换为更易读的格式。
嵌入式设备逆向所需的工具链
虽然我是 Salaea 逻辑分析仪的忠实粉丝,但对于大多数爱好者来说,这些都是相对昂贵的。因此,我将为此系列使用低成本的 fxXXX 系列逻辑分析仪。人们可以以相当低的价格从 eBay 或亚马逊购买这些分析仪。我们将与这些分析仪一起使用的软件将是 PulseView 软件套件。

在选择逻辑分析仪时,有几个因素需要考虑,我在下表中列出了这些因素。
嵌入式设备逆向所需的工具链
对于我们将要研究的目标,24MHz的采样率就足够了。然而,对于专业使用,我建议使用Saleae或其他至少能够达到100MHz的逻辑分析仪。

Saleae Logic Analyzer

FX2LA Logic Analyzer

这些逻辑分析仪由 PulseView / Sigrok 软件支持,我们将在本文的示例中使用该软件。

面包板或跳线

我们需要一种方法将我们的 Raspberry Pi 连接到我们的各种目标,这必然会用到面包板。面包板使我们无需焊接即可制作电子电路原型。在使用 Raspberry Pi 时,我非常喜欢下图所示的机箱/面包板组合:
嵌入式设备逆向所需的工具链

焊台

在某些示例中,可能需要焊接到我们的目标上。例如,有时我们需要直接焊接到组件上以对其进行测量/接口,而其他时候我们需要将所有部件都移除。

适合你烙铁需要满足以下条件:

你要焊接什么?

电路板;

汽车零部件;

布线;

你有多少可用的办公桌/工作台空间?

你需要返修台吗?

你会移除/添加 SMD/SMT 组件吗?

如果你正在寻找一个低成本的焊台,我推荐这个。它的温度范围可以从 392 到 896,并且可以通过操作台控制。如果你要进行 SMD 返修和移除 BGA 设备,你将需要选择具有热风返修台。

该视频可以提供有关选择合适工作站的更多信息。

其他硬件工具

到目前为止,我只列出了必需的工具。但是,许多其他工具和组件在你的硬件实验室中可能会有所帮助,比如:

硅胶垫:

为探测设备/焊接提供安全的表面平台;

显微镜:

印刷电路板;

FTDI越狱:

广泛支持各种编程语言的硬件多功能工具;

示波器:

用于查看模拟信号,适用于调查无法按预期工作的神秘/麻烦的数据线,也用于收集功率跟踪差分功率分析和电压故障;

选择示波器指南;

ChipWhisperer 平台

用于电压闪变和侧通道分析,NewAE还提供了一系列优秀的教程和示例。

随着你继续研究和分析更多目标,你的硬件需求将会增长。本文介绍了遵循此特定示例所需的基本组件。

软件工具

请记住,在逆向工程过程中,硬件通常只是第一个障碍。通常情况下,我们在硬件级别进行逆向工程,以增加对软件级别组件的访问。在本文中,我们将使用几个软件工具,并在下面重点介绍核心工具。

Ghidra

熟悉我背景的人都知道,Ghidra 已迅速成为我在软件逆向领域的首选工具。

Ghidra 是 NSA 开发的 SRE(软件逆向工程)工具套件。如果你熟悉 IDA-Pro、r2 或 Binary Ninja,那么你可能就熟悉 Ghidra。我们可以使用上面提到的任何工具对这个固件镜像进行逆向工程。尽管如此,我还是选择了 Ghidra,因为它是开源的,并且具有用于脚本和分析二进制文件的相对完整且记录良好的 API。

使用 Ghidra 的好处有很多:

它是完全开源和免费的;

支持架构的大型库;

适用于所有受支持架构的反汇编和反编译工具;

用于扩展分析/插件开发的 Java/Python API;

当我们在整个系列中查看固件映像时,我们将使用 Ghidra。此外,在本文中,我们将学到以下知识:

将内存区域添加到固件映像;

使用自定义 ghidra 扩展增强自动分析;

模拟 Ghidra 的 PCode 以更好地了解固件行为;

我在写了一篇关于设置开发环境来开发 Ghidra 模块和脚本的文章。当我们查看从目标中提取的固件映像时,我们将使用此环境。

Binwalk

在我们将二进制或固件映像加载到 Ghidra 之前,我们需要回答几个问题:

这个软件是为什么架构编写的?

此映像是压缩的还是加密的?

此固件映像中是否嵌入了其他文件或文件系统?

Binwalk 可以帮助我们避开几乎所有这些问题。Binwalk 是一种检查二进制文件并搜索预定义文件格式的工具。其中一些格式包括:

适用于多个操作系统的可执行格式;

文件系统映像;

多媒体文件;
嵌入式设备逆向所需的工具链
Binwalk 还可以生成熵图,这在确定固件映像是加密还是压缩时非常有用。当我们从目标中提取固件映像时,我们将使用 binwalk 执行我们的初始分析。 binwalk 的输出将帮助我们确定提取感兴趣数据所需的后续步骤。
嵌入式设备逆向所需的工具链

Kaitai Struct

一旦我们了解了给定二进制文件或固件映像的结构,我们可能需要编写一个解析器来提取感兴趣的数据。 Kaitai struct 很快成为我编写自定义二进制解析工具的首选工具。

Kaitai Struct 是一种声明性语言,用于描述布局在文件或内存中的各种二进制数据结构:即二进制文件格式、网络流数据包格式等。

其主要思想是,在Kaitai Struct语言中只描述一种特定的格式,然后可以将其编译成一种受支持的编程语言中的源文件。此外,这些模块将包含为解析器生成的代码,该解析器可以从文件/流中读取所描述的数据结构,并以易于理解的API访问它。

我们可以使用 Kaitai struct 为二进制文件编写模板,使用该模板,Kaitai 将为我们生成一个解析库。该工具非常节省时间,并且支持多种输出语言。下面是我为 ePOS RTOS 实现的自定义文件系统编写的 Kaitai Struct 的一些示例应用程序。

Kaitai 模板;

自动生成的解析器;

使用自动生成的解析器;

Kaitai 还具有可以在本地运行的基于 Web 的 IDE。

你可以从kaitai.io了解更多关于Kaitai的信息并下载相关工具

Pulseview / SigRok

Pulseview 是 Sigrok 的前端软件,我们将使用它来分析和查看我们使用逻辑分析仪捕获的数据。此外,Pulseview 将对我们捕获的流量应用各种协议解码器,使我们能够从捕获中获得更多含义,并使捕获的输出更具可读性。例如,使用UART解码器,我们可以这样做:
嵌入式设备逆向所需的工具链
嵌入式设备逆向所需的工具链
我们还可以导出这些数据以进行进一步分析,编写我们的插件,甚至以编程方式编写如何收集信息的脚本。Pulseview 和 sigrok 也是完全开源的,并且有许多兼容的设备,包括一些版本的 Saleae Logic 分析仪,你可以在此处下载 Pulseview 软件。

总结

本文列出的工具只是对嵌入式系统/固件进行逆向工程所需的一些工具。旨在从硬件和软件的角度回顾嵌入式系统逆向工程的基础知识。文章来源地址https://www.toymoban.com/news/detail-437648.html

到了这里,关于嵌入式设备逆向所需的工具链的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式Linux(8):字符设备驱动--注册字符类设备

    杂项设备 注册杂项设备: 注销杂项设备: 字符类设备 文件:include/linux/cdev.h 步骤流程: 定义一个cdev结构体。 使用cdev_init函数初始化cdev结构体成员变量。 参数: 第一个:要初始化的cdev结构体 第二个:文件操作集: cdev-ops = fops;//实际就是把文件操作集写ops 使用cdev_add函数

    2023年04月22日
    浏览(36)
  • 嵌入式设备显示屏相关概念汇总

    LCD 接口:是一种常见的数字电路接口,支持多种显示器件,如字符型液晶显示器和点阵型液晶显示器等。 VGA 接口:是一种视频接口标准,用于连接显示器和计算机。该接口提供模拟 RGB 信号,支持最高分辨率为 1920x1080。 HDMI 接口:是一种数字音视频接口标准,用于连接高清

    2024年02月01日
    浏览(40)
  • 嵌入式linux设备网口带宽-测试方法

    iperf是一个基于Client/Server的网络性能测试工具,可以测试TCP、UDP和SCTP带宽质量,能够提供网络吞吐率信息,以及震动、丢包率,最大段和最大传输单元大小等统计信息,帮助我们测试网络性能,定位网络瓶颈。其中抖动和丢包率适应于UDP测试,二带宽测试适应于TCP和UDP。 一

    2024年02月10日
    浏览(30)
  • 【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统

    上一课: 【小黑嵌入式系统第一课】嵌入式系统的概述(一)——概念、特点、发展、应用 下一课: 【小黑嵌入式系统第三课】嵌入式系统硬件平台(一)——概述、总线、存储设备(RAMROMFLASH) 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享

    2024年02月08日
    浏览(34)
  • 嵌入式linux驱动开发篇之设备树

    设备树(Device Tree)是一种用于描述嵌入式系统硬件组件及其连接关系的数据结构。它被广泛用于嵌入式 Linux 系统,尤其是针对使用多种不同架构和平台的嵌入式系统。它是一种与硬件描述相关的中间表示形式,将硬件信息抽象成一种可移植的格式,使得操作系统和引导加载

    2024年02月22日
    浏览(53)
  • 嵌入式设备应用开发(发现需求和提升价值)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         很多做技术的同学,都会陷入到技术的窠臼之中。对于如何做具体的产品、实现具体的技术,他们可能很感兴趣。但是做出来的东西做什么用,或者说是有没有竞争力,事实上他们不

    2024年02月11日
    浏览(35)
  • 【小黑嵌入式系统第三课】嵌入式系统硬件平台(一)——概述、总线、存储设备(RAM&ROM&FLASH)

    上一课: 【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统 下一课: 【小黑嵌入式系统第四课】嵌入式系统硬件平台(二)——I/O设备、通信设备(UARTUSB蓝牙)、其他(电源时钟复位中断) 嵌入式系统的硬件除了核心部件——嵌入

    2024年02月07日
    浏览(31)
  • 实时嵌入式Linux设备基准测试快速入门1介绍

    工业4.0已经到来,生产线需要新技术来应对客户日益增长的新功能需求,使用配备嵌入式 Linux 的单板计算机来处理所需的许多功能是大势所趋。这样大多数工业控制系统都需要实时性能,开发人员不得不面对这样一个事实:Linux原本并不适用于实时环境。不过多年来很多人都

    2024年02月15日
    浏览(27)
  • 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现

    大家好,今天给大家介绍 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现 ,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全! 可进群免费领取。 在嵌入式Linux系统中,设备驱动是连接硬件设备和操作系统之间的桥梁。

    2024年02月19日
    浏览(43)
  • 嵌入式设备中的SoC与MCU的区别深度解析

    嵌入式设备中的SoC与MCU的区别深度解析 在嵌入式系统中,SoC(System-on-a-Chip)和MCU(Microcontroller Unit)是两种常见的处理器架构。尽管它们都用于嵌入式应用,但它们在设计、功能和性能方面存在一些显著的区别。本文将深入解析SoC和MCU之间的区别,并提供相应的源代码示例。

    2024年03月23日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包