Asphaltian/OpenRBX

GitHub: Asphaltian/OpenRBX

OpenRBX 是 Roblox 2007 年版本的逆向还原与开源重实现项目,旨在逐指令重建原始二进制并产出可继续开发的代码树。

Stars: 0 | Forks: 0

# OpenRBX 这是对 Roblox 2007 年 12 月发布版本的逆向还原。其目标是逐条指令地重建原始二进制文件,并最终得到一个值得在此基础上继续构建的代码树。 规范和工具遵循 [LEGO Island 逆向还原](https://github.com/isledecomp/isle)项目。 ## 状态

仍处于早期阶段。`WebService.dll` 包含 12,633 个函数。 RBXGS(游戏服务器)优先处理,因为它附带的 `WebService.dll` 包含未剥离的 PDB。客户端紧随其后。无论如何,大部分工作都是通用的:`common/` 下的引擎库是两者共享的,并且 `WebService.dll` 内部六个链接时代码生成对象中有三个来自客户端代码树,而不是服务器的。 ## 构建 Visual C++ 8.0 SP1 编译了原始版本,并且是唯一能重现其输出的工具链,因此贡献内容将以它为标准进行衡量。 #### 前置条件 - Visual C++ 8.0 SP1。[MSVC800-SP1](https://github.com/Asphaltian/MSVC800-SP1) 是一个免安装的便携版副本。版本号很重要:原始版本是使用 `.762` 构建的,而 RTM 版本的 `.42` 会生成不同的代码。 - [CMake](https://cmake.org/),可以是独立版本,也可以来自当前 Visual Studio 的“使用 C++ 的桌面开发”工作负载。 #### 编译 打开命令提示符并运行工具链中的 `Common7\Tools\vsvars32.bat` 来设置环境。不要使用 `VC\bin\vcvars32.bat`,因为它会引用 `%VS80COMNTOOLS%` 并期望找到已注册的安装。 然后进行配置和构建: ``` cmake -B build -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo cmake --build build ``` `RelWithDebInfo` 会保留进一步逆向工作所需的调试符号,而 NMake Makefiles 是能够兼容这种老旧工具链的生成器。构建结果是 `build\WebService.dll`。 ### 验证 要将构建结果与原始版本进行比较,请安装 [reccmp](https://github.com/isledecomp/reccmp): ``` pip install -r tools/requirements.txt ``` 通过项目根目录中的 `reccmp-user.yml`,将其指向你的原始副本: ``` targets: WEBSERVICE: path: path/to/WebService.dll ``` 然后执行: ``` reccmp-reccmp --target WEBSERVICE -S WEBSERVICEPROGRESS.SVG ``` ## 项目结构 - `WebService/` - RBXGS 特定的编译单元 - `common/` - 引擎静态库,原始链接消耗的每个 `.lib` 对应一个目录 - `3rdparty/` - 内部依赖项 - `util/` - 支持逆向工程本身的头文件 - `cmake/` - CMake 模块 - `tools/` - Python 工具及其依赖要求 - `reccmp/` - reccmp 的数据源 - `assets/` - 进度报告的图标 ## 目标二进制文件 | 二进制文件 | 大小 | SHA256 | |--------|------|--------| | WebService.dll | 3,461,120 字节 | `5e9c6b82605fc8429c5fc5f682f2d7f98b55b73d993dfba58437365754410e2f` | 版本 0.3.676.0,日期为 2007 年 12 月 20 日。 ## 贡献 欢迎提交贡献。简明的规范如下: - 使用 reccmp 标记(`FUNCTION:`、`STUB:`、`GLOBAL:`)为逆向代码添加注释 - 在编译单元内按地址升序排列函数 - 将每个文件放置在 `WebService.pdb` 为其记录的路径中 - 遵循 clang-format 配置 - 在 PDB 中有对应名称的地方采用 PDB 中的名称,仅在 PDB 中没有的地方使用 NCC 占位符(`FUN_XXXXXXXX`、`g_unk0xXXXXXXXX`) - 保持拉取请求简短且聚焦 [CONTRIBUTING.md](CONTRIBUTING.md) 详细涵盖了上述每项规范。
标签:Bash脚本, C++, URL提取, 云资产清单, 反编译, 开源重制, 数据擦除, 游戏引擎, 逆向工具, 逆向工程