dethrace-labs/dethrace
GitHub: dethrace-labs/dethrace
1997年经典驾驶游戏《Carmageddon》的逆向工程项目,通过重构引擎源码实现现代系统原生运行。
Stars: 1102 | Forks: 71
# Dethrace
[](https://github.com/dethrace-labs/dethrace/actions/workflows/workflow.yml)
[](https://twitter.com/dethrace_labs)
[](https://discord.gg/f5StsuP)
Dethrace 是一个尝试了解 1997 年驾驶/混乱游戏 [Carmageddon](https://en.wikipedia.org/wiki/Carmageddon) 幕后运作方式的项目,旨在重建它以在现代系统上原生运行。
## 状态
## 构建
### 依赖项
Dethrace 使用 CMake 进行构建,并在运行时依赖 SDL2。安装它们最简单的方法是通过您喜欢的包管理器。
OSX:
```
brew install SDL2 cmake
```
Linux:
```
apt-get install libsdl2-dev cmake
```
### 克隆
Dethrace 使用 [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules),因此我们在初始克隆后必须拉取它们:
```
git clone https://github.com/dethrace-labs/dethrace
cd dethrace
git submodule update --init --recursive
```
### 构建
Dethrace 使用 [cmake](https://cmake.org/)
生成构建文件:
```
mkdir build
cd build
cmake ..
```
一旦 cmake 为您的平台生成了构建文件,即可运行构建。例如:
```
make
```
## 运行游戏
Dethrace 不附带任何内容。您需要访问原始游戏的数据。如果您没有原始 CD,可以从 [GoG.com 购买 Carmageddon](https://www.gog.com/game/carmageddon_max_pack)。
`dethrace` 还支持各种免费演示版:
- [Original Carmageddon demo](https://rr2000.cwaboard.co.uk/R4/PC/carmdemo.zip)
- [Splat Pack demo](https://rr2000.cwaboard.co.uk/R4/PC/splatdem.zip)
- [Splat Pack Xmas demo](https://rr2000.cwaboard.co.uk/R4/PC/Splatpack_christmas_demo.zip)
Dethrace 通常期望被放置在 Carmageddon 的顶级文件夹中。当您在那里看到原始的 `CARMA.EXE` 时,就说明找对了文件夹。如果您在 Windows 上,还必须将 `SDL2.dll` 放在同一文件夹中。
### 配置 INI 文件
或者,您可以通过提供 [dethrace.ini 文件](docs/CONFIGURATION.md) 来配置不同的 Carmageddon 目录和设置。
### CD 音频
Dethrace 支持 GOG cd 音频规范。如果 Carmageddon 文件夹中有一个 `MUSIC` 文件夹,其中包含 `Track02.ogg`、`Track03.ogg` 等文件,那么 Dethrace 将使用这些文件代替原始的 CD 音频功能。
## 背景
在 [Carmageddon Splat Pack](http://carmageddon.wikia.com/wiki/Carmageddon_Splat_Pack) 扩展 CD 发行版上,[发现](http://1amstudios.com/2014/12/02/carma1-symbols-dumped)了一个早期内部构建的 Watcom 调试符号,名为 `DETHRSC.SYM`。不幸的是,这些符号与任何已知的已发布可执行文件都不匹配,这意味着它们很有趣,但不能立即用于逆向工程游戏。
这是从 Watford 调试器中看到的样子——所有方法的名称都存在,但它们指向的代码位置是无效的:

我们正在慢慢地将原始汇编代码逐个函数地替换为等效的 C 代码。
### "dethrace" 是拼写错误吗?
不,嗯,至少我不这么认为。根据符号转储,原始文件存储在 `c:\DETHRACE` 中,符号文件名为 `DETHSRC.SYM`。也许他们去掉 "a" 是为了兼容 [8.3 文件名](https://en.wikipedia.org/wiki/8.3_filename)?
## 更新日志
[从开始到发布](docs/CHANGELOG.md)
## 法律声明
Dethrace 已发布至公共领域。Dethrace 提供的文档和功能仅可用于拥有 Carmageddon 所提供的资产的情况。
本存储库中的源代码仅供非商业用途。如果您使用源代码,您不得向他人收取访问该代码或其任何衍生作品的费用。
Dethrace 及其任何维护者与 SCi、Stainless Software 或 THQ Nordic 没有任何关联或受其认可。
## 背景
在 [Carmageddon Splat Pack](http://carmageddon.wikia.com/wiki/Carmageddon_Splat_Pack) 扩展 CD 发行版上,[发现](http://1amstudios.com/2014/12/02/carma1-symbols-dumped)了一个早期内部构建的 Watcom 调试符号,名为 `DETHRSC.SYM`。不幸的是,这些符号与任何已知的已发布可执行文件都不匹配,这意味着它们很有趣,但不能立即用于逆向工程游戏。
这是从 Watford 调试器中看到的样子——所有方法的名称都存在,但它们指向的代码位置是无效的:

我们正在慢慢地将原始汇编代码逐个函数地替换为等效的 C 代码。
### "dethrace" 是拼写错误吗?
不,嗯,至少我不这么认为。根据符号转储,原始文件存储在 `c:\DETHRACE` 中,符号文件名为 `DETHSRC.SYM`。也许他们去掉 "a" 是为了兼容 [8.3 文件名](https://en.wikipedia.org/wiki/8.3_filename)?
## 更新日志
[从开始到发布](docs/CHANGELOG.md)
## 法律声明
Dethrace 已发布至公共领域。Dethrace 提供的文档和功能仅可用于拥有 Carmageddon 所提供的资产的情况。
本存储库中的源代码仅供非商业用途。如果您使用源代码,您不得向他人收取访问该代码或其任何衍生作品的费用。
Dethrace 及其任何维护者与 SCi、Stainless Software 或 THQ Nordic 没有任何关联或受其认可。标签:Bash脚本, Carmageddon, CMake, SDL2, 二进制分析, 云安全运维, 云资产清单, 复刻, 客户端加密, 开源游戏, 游戏修改, 游戏引擎, 源码分析, 经典游戏, 赛车游戏, 逆向工程