native-gb/gbre
GitHub: native-gb/gbre
GBRE 是一个 Game Boy 软件逆向研究与原生重实现的互操作性工具包,提供从 ROM 分析到源码映射和编辑器导航的完整工作流。
Stars: 0 | Forks: 0
# GBRE
GBRE 是一个研究与互操作性工具包,用于分析用户提供的
Game Boy 软件,并开发原生重实现。
它提供了 ROM 范围数据模型、source-map 生成、HTML 覆盖率地图、
VS Code 导航、确定性模拟器控制、语义场景以及
原生/原始对比基础设施。如果存在完整的反编译,它将非常有用,但并非必需:
一个新的清单可以从一个未知的 ROM 大小范围开始,并通过手动分析、trace、资源
检测器和部分反编译来积累证据。
GBRE 有意与每个游戏移植版和每个
特定游戏的研究数据库保持为独立的仓库。
## 仓库边界
```
GBRE/ generic tools, schemas, editor support
native-gb-/ public native C++ port
native-gb--re/ private game map, scenarios, oracle glue
```
公共移植版是唯一活跃的 C++ 工作区。`-re` 仓库包含
注释和可重现的证据;它决不能成为移植版的 fork。
GBRE 包含可复用的机制。在 adapter API 被泛化期间,一些早期的 Tetris 专用 adapter 仍保留在此处,
但不包含 Tetris 清单和场景
数据库。
## 核心工具
- `tools/build_rom_map.py` 从语义
清单和任何可用的证据地图构建一个无间隙的字节清单。
- `tools/build_rgbds_source_map.py` 将发出的 RGBDS 源代码行映射到确切的 ROM
范围,同时验证插桩不会更改重建的 ROM。
- `tools/build_report.py` 生成本地交互式 ROM 热力图。
- `tools/gbre.py` 按地址、单元或源执行命令行查找。
- `tools/gbre_scenario.py` 验证并运行外部场景数据库。
- `tools/gbre_live.py` 提供原生开发 UI 使用的面向行的协调器。
- `editor/vscode-gbre` 添加了 CodeLens 以及原生代码、
参考源代码和 ROM 范围之间的跳转导航。
## 运行测试
```
./scripts/test.sh
```
通用测试套件无需 ROM 即可运行。当 `../native-gb-tetris-re` 和被忽略的本地输入存在时,
Tetris 集成检查将变为可用。
## 安装编辑器导航
```
./scripts/install-vscode-navigation.sh
```
每个原生工作区配置四个路径:其清单、ROM 地图、参考
根目录和 HTML 报告。这些路径通常指向相应的私有
`-re` 同级目录。`F12` 或 Ctrl-click 会跟随 `GBRE: game.unit` 标记;专用
命令可跳转到汇编、原生代码或热力图。
## 在没有反编译的情况下启动游戏
创建一个包含 ROM 大小、接受的哈希值和初始
未知单元的清单。仅使用该清单运行 `build_rom_map.py` 就已经可以生成
完整的清单。使用来自以下各项的 evidence-span CSV 文件对其进行细化:
- 卡带标头和指针表分析;
- 模拟器执行和内存访问 trace;
- 图块、文本、音频、压缩、地图和脚本检测器;
- 手动注释或稍后的部分/可重建反编译。
证据和实现是独立的声明。一个原生函数可以
对一个源
范围进行 `implement`、被 `derived_from`、`reference` 或 `verified_against`。密集的现代实现不需要镜像原始的
内存布局。
## 数据与分发
GBRE 不包含 ROM,也不包含特定游戏的场景数据库。获取的模拟器
和参考仓库、构建、报告、trace、捕获和本地输入
均被忽略。请参阅[仓库与法律模型](docs/repository-and-legal-model.md)
和[公开发布检查清单](docs/public-release-checklist.md)。
## 许可证
本仓库中的原始源代码在 GPL-3.0-only 下提供。
第三方组件和获取的参考保留其各自的许可证。
标签:C++, Game Boy, Python, ROM分析, 云资产清单, 互操作性, 多模态安全, 数据擦除, 无后门, 游戏开发, 逆向工具, 逆向工程