xdzleo/rexauto

GitHub: xdzleo/rexauto

rexauto 是一个将 Xbox 360 游戏容器自动静态重编译为原生 PC 可执行文件的桌面编排工具,通过自动化流水线大幅降低游戏移植门槛。

Stars: 1 | Forks: 0

# rexauto **自动将 Xbox 360 游戏转换为原生 PC 可执行文件。** [![最新发布](https://img.shields.io/github/v/release/xdzleo/rexauto?label=download)](https://github.com/xdzleo/rexauto/releases/latest) [![许可证](https://img.shields.io/github/license/xdzleo/rexauto)](LICENSE) ![平台](https://img.shields.io/badge/platform-Windows-blue) ![python](https://img.shields.io/badge/python-3.10%2B-blue) rexauto 是一个桌面前端和编排器,用于 [ReXGlue](https://github.com/xdzleo/rexglue-skate3) 静态重编译器。只需指定一个游戏 容器 —— ISO、GoD、STFS 或已解压的文件夹 —— 它就会运行整个流水线,而这通常是 需要一整天手动完成的工作:提取、构建骨架、恢复跳转表、构建,以及一个全新游戏 所需的双重自我修复循环。然后它会启动结果。

## 这不是模拟 模拟器会在**每次你运行游戏时**读取并解释或 JIT 客户端的 PowerPC 指令。 静态重编译则将 Xbox 360 的二进制文件**一次性**翻译成 C++ 代码, 然后将其编译为真正的 x86-64 可执行文件。你的 CPU 直接运行游戏的机器码 —— 没有解释器,没有每条指令的开销,整个循环过程中也没有模拟器的存在。 最终输出是一个 `.exe` 文件。它在任务管理器中会显示为你的游戏。 ## 经历完整流水线的游戏 状态是针对每个游戏且真实的 —— 通过重编译成功构建并启动,与运行时完整实现 特定游戏使用的所有 GPU 和内核路径是两个不同的问题。 | 游戏 | 状态 | |---|---| | Skate 3 | 可玩 | | GTA: San Andreas HD | 游戏中 | | GTA V | 可进入游戏 | | Dragon Ball Z: Budokai 3 HD | 战斗运行中 | | Captain America: Super Soldier | 游戏中 | | WWE SmackDown vs. Raw 2007 | 可玩至菜单 | | Gears of War: Judgment | 启动,收敛 | | Crash of the Titans | 启动 | 更大规模的游戏库(约 30 个游戏)被用作回归测试门槛: 每次 SDK 变更在发布前都必须确保整个集合保持字节级一致或表现更好。 ## 下载与运行 1. 从 [最新发布](https://github.com/xdzleo/rexauto/releases/latest) 中获取 `rexauto.exe`。 2. 运行它。会打开一个原生窗口(基于 Edge WebView2):包含 3D 场景、直接从包中 读取的游戏封面图和标题、实时的六阶段追踪器,以及流式传输的日志。 3. 首次运行时,打开右上角的 **Setup** —— 它会显示已安装的组件,并获取其余的: - **ReXGlue SDK** —— 一键安装,预构建,配置好后直接在应用旁使用。 - **LLVM/clang** + **VS Build Tools** —— 通过 `winget` 安装。 - **IDA Pro** —— 可选,商业软件;仅跳转表阶段会使用它。 4. 指向一个容器,点击 **Recompile**,看着它运行。 ## 流水线 1. **extract(提取)** —— 容器 → `default.xex` + 资源:**STFS** (`CON`/`LIVE`/`PIRS` — XBLA/DLC), **ISO** (GDFX/XDVDFS 光盘),**GoD** (SVOD 单文件),或已解压的文件夹。 2. **init(初始化)** —— `rexglue init` 构建项目骨架。 3. **setjmp** —— 查找静态链接的 CRT `setjmp`/`longjmp` 并将它们记录在 清单中。客户端的 `longjmp` 会从 `jmp_buf` 恢复寄存器和栈并执行 `blr`; 如果重编译时不加处理,该 `blr` 会变成普通的 `return`,从而破坏非易失性寄存器, 导致使用异常的游戏在启动时崩溃。没有异常机制的游戏没有特征签名,因此保持原样。 4. **jumptables(跳转表)** —— 如果安装了 IDA,会将 `bctr` 跳转表恢复到 `switch_tables.toml` 中 ([xenon-jumptables](https://github.com/xdzleo/xenon-jumptables))。如果没有 IDA 则会自动跳过 —— 重编译器内置的 switch 处理仍然有效。 5. **build(构建)** —— 代码生成 + clang/CMake。当重编译器在某个执行流的中间拆分函数时 (例如分支进入下一个函数 → 变成 `goto` 指向未声明的标签),rexauto 会**自动扩展**边界 并重新构建 —— 这种修复移植团队通常需要手动完成 —— 直到干净通过。 6. **runheal(运行修复)** —— 运行游戏;调度器遇到的每一个 `invalid or unregistered function at 0xADDR` 都会被注册、 重新构建并再次运行,直到没有缺失的函数为止。 7. **run(运行)** —— 启动它。 ## 共享修复(gabarito 数据库) 全新移植最耗时的部分在于,修复循环需要重新发现静态分析阶段遗漏的函数 —— 而对于同一个二进制文件,这套遗漏的函数集对**所有人都是完全相同的**。因此 rexauto 将其公开: 一旦某个游戏成功收敛,它的修复方案(一个由 `default.xex` 的 SHA-256 作为键的 `functions.toml`) 就会进入共享数据库。下一个人在重编译完全相同的二进制文件时,会在前期自动注入这些数据, 从而跳过大部分修复工作。数据获取是公开且无需密钥的;如果没找到匹配的数据,则直接从头开始修复。 内置的 SDK **通过哈希进行严格绑定** —— rexauto 拒绝运行未经测试的 SDK 版本,因此运行时不匹配 不会悄无声息地产生损坏的 exe 文件。 ## CLI 相同的引擎,没有窗口: ``` python rexauto.py "" --name mygame --run ``` 各阶段均设有检查点(重新运行时会跳过已完成的阶段)。可用 Flags 包含:`--from `, `--only `,`--no-jumptables`。工具路径来自常规安装位置、`PATH` 或环境变量( `REXGLUE`, `REXSDK_DIR`, `IDAT`, `CLANG`, `VCVARS`, `PYTHON`, `JT_REPO`)。 ## 它做不到的事情 rexauto 帮助你自动获得一个**能启动并执行客户端代码的构建版本**。它**不会**填补 特定游戏的 GPU/模拟器差距:如果某款游戏使用了 ReXGlue 运行时尚未实现的顶点格式或内核 调用,它可能会启动、打开一个窗口并进入渲染循环,但可能无法正确渲染画面或保持稳定运行。 这是运行时模拟工作 —— 与重编译相互独立,且本质上完全取决于具体游戏。rexauto 代替了 机械化的流水线工作;而运行时后端才是决定游戏能否存活的关键。 你只需要提供游戏本体。rexauto 不会下载、解密或分发受版权保护的内容。 ## 从源码构建 ``` pip install pywebview pyinstaller pillow python gui/make_icon.py pyinstaller --noconfirm --onefile --windowed --name rexauto \ --icon gui/rexauto.ico --add-data "gui/index.html;gui" --paths gui \ --hidden-import extract --hidden-import heal --hidden-import rexauto \ --hidden-import detect_setjmp --hidden-import server --hidden-import setup \ --collect-all webview app.py ``` 单个二进制文件,两种模式:无参数 → GUI;`--__pipeline …` → 重编译器(GUI 会重新 调用自身来流式传输流水线进度)。或者将其作为普通的 Web 应用运行:`python gui/server.py`。 ## 相关项目 - **[xenon-jumptables](https://github.com/xdzleo/xenon-jumptables)** —— 恢复静态重编译器遗漏的 PowerPC `bctr` 跳转表。被 jumptables 阶段所使用。 - **[rexglue-sdk](https://github.com/xdzleo/rexglue-sdk)** —— Xbox 360 重编译 运行时和工具包。 ## 许可证 MIT —— 见 [LICENSE](LICENSE)。内置的第三方组件保留其各自的许可证 ([NOTICE](NOTICE))。 关键词:Xbox 360 转 PC · 静态重编译 · PowerPC / Xenon 反编译 · XEX · 原生移植 · 游戏移植 · 逆向工程 · XenonRecomp
标签:Bash脚本, Xbox 360, 云资产清单, 桌面应用, 游戏移植, 漏洞挖掘, 自动化流水线, 逆向工具, 逆向工程, 静态重编译