Bread:一款功能强大的BIOS逆向工程和高级调试工具

关于Bread

Bread是一款功能强大的BIOS逆向工程和高级调试工具,该工具也是一个“可注入”的实模式(Real-Mode)x86调试器,可以帮助广大研究人员通过串行线缆从另一台电脑调试任意实模式代码。

考虑到目前社区中很多BIOS逆向工程工具都是使用反汇编程序静态完成的,这就导致理解BIOS上下文环境会变得非常的困难,而且也无法得知给定代码中寄存器或内存的值。因此,Bread便应运而生。Bread支持以实模式(Real-Mode)调试任意代码,例如可引导代码或DOS程序等。

工具运行机制

Bread主要分为两个部分:调试器Debugger和桥接器Bridge。其中,调试器完全使用汇编语言开发,可以在硬件上运行,而桥接器则使用C语言开发,可以在Linux操作系统上直接运行。

调试器本质上是可注入的代码,以16位实模式开发,可以注入到BIOS ROM或其他实模式代码中。在执行时,它可以设置适当的中断处理程序,并将处理器设置为单步模式,然后等待串口上的命令。

桥接器则是调试器和GDB之间的链接,桥接器通过TCP与GDB通信,并通过串行端口将请求/响应转发给调试器。桥接器的目的是消除GDB数据包的复杂性,并建立一个更简单的协议来与机器通信。

下图显示的是该工具的整体架构图:

功能介绍

当前版本的Bread支持下列功能:

1、读取内存;

2、写入内存;

3、读取和写入寄存器;

4、单步模式;

5、断点;

6、硬件监控点;

工具要求

1、GNU Make

2、C编译器(例如GCC、Clang或TCC)

3、NASM

4、Linux操作系统

工具下载

广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/Theldus/bread.git

然后切换到项目目录中,运行下列命令完成代码构建:

cd BREAD/

make

make UART_POLLING=no

工具使用

假设符号文件路径为symbols/ami_ipm41d3.txt,我们可以通过下列命令执行Bread:

$ ./simbolify.py symbols/ami_ipm41d3.txt ip41symbols.elf

接下来,使用下列方法将其加载到GDB中:

(gdb) add-symbol-file ip41symbols.elf 0

add symbol table from file "ip41symbols.elf" at

.text_addr = 0x0

(y or n) y

Reading symbols from ip41symbols.elf...

(No debugging symbols found in ip41symbols.elf)

(gdb) p cseg_

cseg_change_video_mode_logo  cseg_get_cpuname             

(gdb) p cseg_

工具运行演示

工具使用演示

演示视频一:【点我观看】

演示视频二:【点我观看】

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

Bread:【GitHub传送门】

参考资料

Memory (Debugging with GDB)

Dump/Restore Files (Debugging with GDB)

Searching Memory (Debugging with GDB)

Assignment (Debugging with GDB)

Dump/Restore Files (Debugging with GDB)

Registers (Debugging with GDB)

https://sourceware.org/gdb/download/onlinedocs/gdb/Continuing-and-Stepping.html

https://sourceware.org/gdb/download/onlinedocs/gdb/Set-Watchpoints.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/345874.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学编曲怎么入门 学会编曲能赚钱吗 编曲软件哪个好用 学编曲要先学什么 编曲和作曲什么区别

一、学编曲有什么用 1、工作时间较为自由 编曲是一个技能专业,换句话说,编曲是一项技能,如果能够熟练掌握编曲这项技能,那么就可以尝试从事一些和编曲相关的职业,例如编曲师等等,这类和编曲有关的职业大多…

零基础学Python(5)— 基本数据类型

前言:Hello大家好,我是小哥谈。在内存中存储的数据可以有多种类型。例如:一个人的姓名可以用字符型存储,年龄可以使用数值型存储,婚姻状况可以使用布尔型存储。这里的字符型、数值型、布尔型都是Python语言中提供的基本…

gin介绍及helloworld

1. 介绍 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单&…

RK3399平台开发系列讲解(USB篇)BusHound 工具使用介绍

🚀返回专栏总目录 文章目录 一、BusHound简介二、BusHound的下载三、BusHound设备窗口四、BUSHound发送命令窗口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 BusHound软件是由美国perisoft公司研制的一种专用于PC机各种总线数据包监视和控制的开发工具软件,其名…

帝国cms无限级分销的逻辑思路效果展示以及表结构的初步规划

#小李子9479# #帝国cms无限级分销# #帝国cms三级分销系统# 关于分销系统 ,我们要解决以下几个重要的逻辑关系, 1,用户上下级关系,即A通过分享期邀请链接,B点击或扫码注册后,成为A的下线。 2。下级级别的…

10.常用统计分析方法——主成分分析和因子分析

基础知识: 主成分分析概念 主成分分析PCA:是一种数据降维的技巧,将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。 在特征选择方法中有一种方法是方差过滤,即如果一个特征的方差很小&#xff0c…

ckman:非常好用的ClickHouse可视化集群运维工具

概述 什么是ckman ckman,全称是ClickHouse Management Console, 即ClickHouse管理平台。它是由擎创科技数据库团队主导研发的一款用来管理和监控ClickHouse集群的可视化运维工具。目前该工具已在github上开源,开源地址为:github…

免费SSL申请和自动更新

当前是在mac下操作 安装certbot # mac下brew安装即可 brew install certbotcentos 安装 centos安装文档 申请泛解析证书 sudo certbot certonly --manual --preferred-challengesdns -d *.yourdomain.com## 输出 Saving debug log to /var/log/letsencrypt/letsencrypt.lo…

民用激光雷达行业简析

01. 激光雷达是“机器之眼” • 激光雷达是一个通过发射激光并接受发射激光同时对其进行信号处理,从而获得周边物体距离等信息的主动测量装置。 • 激光雷达主要由光发射、光扫描、光接收三大模块组成。光发射模块集成了驱动、开关和光源等芯片。光接收模块集成了…

构筑双品牌矩阵背后,广汽埃安讲出能源生态闭环的“新故事”

“一路繁花”用来形容广汽埃安的2023年并不为过。 2023年12月28日,埃安达成累计产销百万辆的目标,成为全球最快破百万的纯电品牌、新能源品牌以及汽车品牌;全年累计销量超48万辆,同比增长77%。 值得一提的是,2023年以…

APUE学习之信号(Signal)

目录 一、信号 1、基本概念 2、用户处理信号的方式 3、查看信号 4、可靠信号和不可靠信号 5、信号种类 6、终止进程信号的区别 二、进程对信号的处理 1、signal()函数 2、sigaction()函数 3、代码演示 4、运行结果…

鸿蒙开发案例002

1、目标需求 界面有增大字体按钮,每次点击增大字体按钮,“Hello ArkTS”都会变大 2、源代码 Entry Component struct Page {textValue: string Hello ArkTSState textSize: number 50myClick():void{this.textSize 4}build() {Row() {Column() {//…

基于若依的ruoyi-nbcio流程管理系统一种简单的动态表单模拟测试实现(五)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

日志级别与配置

日志的级别 FATAL致命信息表明严重的问题,可能导致应用程序崩溃。ERROR错误信息指示应用程序遇到了一个错误,可能导致功能受损。通常用于记录异常信息。WARN警告信息表明可能存在问题,但不会导致应用程序失败。仍然可以正常运行,…

【数据结构四】栈与Stack详解

目录 栈与Stack 1.实现一个自己的栈 2.Stack的基本使用 3.栈的一些oj题训练 4.栈,虚拟机栈,栈帧的区别 栈与Stack 栈 :一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶…

uvicorn日志清空问题以及uvicorn日志配置

uvicorn日志清空问题 1、配置: uvicorn starlette 2、现象描述: 当我使用uvicorn starlette进行Python web开发的时候,本来想把所有的日志都打印到一个文件里面,于是我写了一个启动脚本,所有的日志都输出到log.t…

jQuery语法知识(表单)

表单 1、:button Selector 描述:选择所有按钮元素和类型为按钮的元素 语法 :jQuery(":button") <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

C++:C/C++内存管理

C&#xff1a;C/C内存管理 C语言C语言内存分配回顾malloc & calloc & realloc & free Cnew & deletenew[ ] & delete[ ]定位newnew & delete原理 malloc / free 与 new / delete对比 C语言 C语言内存分配回顾 我们先回顾一下C语言的内存分配&#xf…

分享一个剧本(改编自我)

不知道是不是错过了一个喜欢我的女孩&#xff0c;一个很不错的女孩&#xff0c;当初没勇气表白。去年表白过但女孩表示仅想是永远的朋友&#xff0c;今天翻他的朋友圈发现2021年我生日时&#xff0c;她分享了这首歌曲&#xff0c;还评论Best wishes!!!&#xff0c;高中有一次我…

抖音怎么引导到公众号丨数灵通

抖音是一款非常流行的社交媒体应用程序&#xff0c;用户可以在其中分享短视频和互动内容。许多用户希望通过抖音来引流到他们的微信公众号&#xff0c;以扩大影响力并吸引更多粉丝。以下是一些关于如何在抖音上跳转到微信公众号的科普信息&#xff1a; 1.信息流广告&#xff1a…