工具

Spice86 实模式 DOS 逆向与重写模拟器

用于执行、逆向分析并重写无源码实模式 DOS 程序的 PC 模拟器。程序运行时它会构建控制流图,退出时转储内存、执行流、Ghidra 兼容的符号,以及一个可独立运行的 C# 项目,其中生成的函数会覆盖原有汇编代码,分析者可以在程序始终可运行的前提下逐个函数将其改写为可读代码。它还提供带自定义分析命令的 GDB 远程服务器、配有 C 头文件结构查看器的内置调试器、可选的 HTTP 内存 API,以及工具覆盖 CPU、内存、断点、控制流图和设备状态的 MCP 服务器;可选的 Ghidra 插件可导入这些转储。

使用条件与局限

  • 正式版本发布在 NuGet 上(审阅时为 16.1.0,发布于 2026-08-05);GitHub 上标签为 latest 的发布是从 master 持续构建的开发预发布版,提供调试版和发布版压缩包。所审阅的 master 提交(2026-10-13)声明的版本为 16.1.0。该项目是原 Java 版 Spice86 的 C# 移植与延续。运行和构建都需要 .NET 10,支持 Windows、macOS 和 Linux;从源码构建使用 dotnet build。
  • README 列出:8086/8088 已完整实现,80186、80286 和 80386 仅部分支持(未实现保护模式和分页,FPU 仅支持检测指令);1 MB 分段内存,支持 EMS、XMS 和 HMA;支持文本模式、CGA、EGA、VGA 和 VESA VBE 1.2 图形,其中 CGA 与 EGA 为尽力实现;DOS 5.0 的 INT 21h 已大体完整;Sound Blaster、OPL 和 Adlib Gold 音频移植自 DOSBox Staging,MT-32 仅部分支持且在 macOS 上不可用。COMPATIBILITY.md 说明许多程序无法运行,并逐一列出了测试过的游戏。
  • DOS 程序及其文件由分析者自行提供;模拟的 C: 盘默认指向程序所在文件夹。转储文件存放在以程序 SHA-256 哈希命名的子文件夹中,生成的项目会传入预期校验和,因此覆盖代码不会作用于其他二进制。GDB 服务器默认在 10000 端口启动,文档说明 MCP HTTP 服务器默认启用,端口为 8081。Ghidra 插件位于单独的仓库,需要 Java 17。README 建议借助大语言模型改写生成的函数,并以该项目对 Cryo《沙丘》的 Cryogenic 重写作为实际示例。
  • 采用 Apache-2.0 许可;NOTICE 致谢 Aeon 项目,README 说明声音代码移植自 DOSBox Staging,CD 与软盘模拟也以其为参照,3rdparty 目录内置了预编译的 FastExpressionCompiler DLL。测试资源是小型 DOS 测试程序,大多在仓库中附有汇编源码。本次未模拟或重写任何程序,所审来源也未确立与 REA 的关联。

关于此条目

类型
工具
类别
游戏分析工具
关联
基础工具
目标
二进制 · 游戏

来源复核于

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

一手来源

  1. README.md GitHub · OpenRakis/Spice86 · 修订 28a877f
  2. README.md#L266-L290 GitHub · OpenRakis/Spice86 · 修订 28a877f
  3. COMPATIBILITY.md GitHub · OpenRakis/Spice86 · 修订 28a877f
  4. doc/mcp.md GitHub · OpenRakis/Spice86 · 修订 28a877f
  5. src/Directory.Build.props GitHub · OpenRakis/Spice86 · 修订 28a877f
  6. LICENSE GitHub · OpenRakis/Spice86 · 修订 28a877f
  7. NOTICE GitHub · OpenRakis/Spice86 · 修订 28a877f
  8. https://github.com/OpenRakis/Spice86/releases/tag/latest
  9. https://www.nuget.org/packages/Spice86/16.1.0