StarkeBlog - 逆向工程 MenuetOS 64

主要观点:介绍了 x86/x64 环境中的两种启动系统(UEFI 和基于 BIOS),重点关注基于 BIOS 的 MenuetOS 64 位系统的启动过程,包括主引导记录(MBR)、主引导加载程序(PBL)等,还讲解了相关的 BIOS 中断函数(如读取磁盘、打印到视频输出)以及静态和动态分析方法。
关键信息

  • MenuetOS 64 基于 BIOS 固件启动,依赖 MBR 磁盘方案,PBL 位于硬盘第一个扇区(512 字节),MenuetOS 64 用了 328 字节。
  • 介绍了 BIOS 中断函数 int 0x13(读取磁盘)和 int 0x10(打印到视频输出)及相关参数。
  • 通过静态分析(在 Ghidra 中进行)和动态分析(使用 QEMU 和 GDB)来研究 PBL 代码。
  • 静态分析中展示了 PBL 的汇编代码及各部分功能,如加载下一个启动阶段、处理磁盘读取错误等。
  • 动态分析中通过运行命令启动虚拟机、设置断点等操作来观察 PBL 执行过程中的寄存器变化和视频输出变化。
    重要细节
  • 16 位实模式下内存分段,段寄存器映射到内存,如 %cs 乘以 16。
  • 介绍了用 dd 命令截取 M6414490.IMG 文件的前 512 字节作为 PBL.BIN 进行分析。
  • 在 Ghidra 中导入 PBL.BIN 时要选择合适的 LanguageID 和设置基地址 0x7c00。
  • 实验中截断虚拟软盘图像导致启动出错,在 GDB 中可观察到相关错误状态。
  • 动态分析中通过设置不同断点观察视频输出的变化,如开始时无输出,加载完内核和配置数据后有特定字符输出。
阅读 9
0 条评论