工具

BREAD BIOS 实模式调试器

可注入的 x86 实模式调试器,用于在真实硬件或虚拟机上调试传统 BIOS 代码、引导代码和 DOS 程序。放入目标代码中的 16 位汇编小程序会安装中断处理程序、让处理器单步执行,并通过串口与 Linux 上的桥接程序通信;桥接程序把这些简化报文转换为 GDB 远程协议,使 GDB 能读写内存和寄存器、单步、继续执行,并可同时设置一个硬件断点和一个观察点。配套脚本可将地址与标签列表转换为供 GDB 加载的最小 ELF 符号文件。

使用条件与局限

  • 项目未发布任何版本。所审阅的 master 提交(2025-10-21)修复了中断模式下的 EIP 处理问题;上一次代码改动是 2023-10-19 加入 symbolify 工具。构建需要 Linux 主机、GNU Make、GCC、Clang 或 TCC 等 C 编译器以及 NASM。默认构建以轮询方式读取 UART,会占满 CPU;UART_POLLING=no 可改为中断模式,但由于中断并非总是启用,该模式不是默认选项。
  • 每个目标都需要修改 dbg.asm:调整 ORG 和返回方式,并恢复为调用调试器而被替换的指令;汇编得到的 dbg.bin 随后放入使用者自有的 BIOS ROM 镜像,或作为 DOS .COM 程序在最小 FreeDOS 或 DOS 启动软盘中运行。在真实硬件上调试需通过串口连接 Linux 主机。仓库不附带任何 ROM;symbols/ami_ipm41d3.txt 是作者为一款 PCWare IPM41-D3 AMI 传统 BIOS 整理的符号名,文件头说明这只是作者自己的理解,并非官方或泄露的符号。
  • README 列出的限制包括:被调试代码并不知道调试器存在,因此切换到保护模式、修改 IDT 或缺少可用栈都会使调试器失效;BIOS 代码无法从启动块开始跟踪,因为调试器需要内存已完成初始化;热重启虽可重新走一遍初始化流程,但路径可能与冷启动不同。虚拟机需支持调试寄存器:Bochs 需启用其 x86 调试器编译,QEMU 需启用 KVM;仓库自带的 qemu 目标即启用 KVM,并使用由随附引导扇区和调试器生成的软盘镜像。
  • 仓库没有测试或 CI;README 链接了一段修改 CPU 名称字符串的演示视频。本次审阅未构建或运行任何内容。采用 MIT 许可证,作者为 Davidson Francis;被调试的固件和程序仍有各自权利,所审来源未确立与 REA 的关联。

关于此条目

类型
工具
类别
调试与动态分析
关联
基础工具
目标
二进制 · 固件

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · Theldus/bread · 修订 700807e
  2. README.md#L99-L134 GitHub · Theldus/bread · 修订 700807e
  3. README.md#L136-L282 GitHub · Theldus/bread · 修订 700807e
  4. Makefile GitHub · Theldus/bread · 修订 700807e
  5. dbg.asm GitHub · Theldus/bread · 修订 700807e
  6. symbolify.py GitHub · Theldus/bread · 修订 700807e
  7. .gdbinit GitHub · Theldus/bread · 修订 700807e
  8. LICENSE GitHub · Theldus/bread · 修订 700807e
  9. https://github.com/Theldus/bread/commit/700807ef312db8bb765f88eb4f702bc22b7b2858

同分区更多条目:原生二进制

原生二进制分区全部 105 项资源