# 游戏破解指南


Steam 游戏的破解（打补丁）思路分三类：要在破解玩家之间联机，用 **Unsteam** 或 **uc-online2**；只玩单机或局域网，用 **GBE Fork**。游戏用 Epic Online Services（EOS）联机时，在线方案都要再配一个 **Nemirtingas Epic Emulator** 接管 EOS 层（见「EOS 联机」一节）。

## 前置准备

- [Unsteam](https://cs.rin.ru/forum/viewtopic.php?f=29&t=134707) —— 联机补丁（需 Steam 客户端运行）
- [uc-online2](https://github.com/UnionCrax-Team/uc-online2) —— 联机补丁，替换单个 DLL（需 Steam 客户端运行）
- [GBE Fork](https://github.com/Detanup01/gbe_fork) —— 离线/局域网模拟器
- [Steamless](https://github.com/atom0s/Steamless) —— SteamDRM 移除工具
- [Nemirtingas Epic Emulator](https://cs.rin.ru/forum/viewtopic.php?f=29&t=105551) —— EOS 联机模拟器

干净的 Steam 游戏文件在 [CS.RIN.RU](https://cs.rin.ru/forum) 上找，方式见文末「工具与资源」。

### 查找 Steam AppID

AppID 是游戏在 Steam 商店的编号，三个方案都用得到（Unsteam 的 `real_app_id`、uc-online2 的 `ogAppId`、GBE 的 `steam_appid.txt`），先查好备用。

方法：打开游戏的 Steam 商店页，URL 里 `/app/` 后面那串数字就是。比如 `store.steampowered.com/app/3683770/` 的 AppID 是 `3683770`。

也可以在商店页地址栏直接搜索游戏名，或用 SteamDB（https://steamdb.info ）查。

### 判断 exe 是 32 位还是 64 位

选 DLL 或补丁文件前先确认游戏架构。最省事的是直接看 `steam_api` 文件名：带 64 的 `steam_api64.dll` 就是 64 位，`steam_api.dll` 则要进一步确认。记事本就能看：把 exe 拖进记事本（提示文件太大就点「仍然打开」），满屏乱码里找一句可读英文 `This program cannot be run in DOS mode`，在它后面不远处找到 `PE` 两个字母，看紧跟其后的字符：

| 看到           | 架构  |
| -------------- | ----- |
| `PE` 后是 `d?` | 64 位 |
| `PE` 后是 `L`  | 32 位 |

原理：`PE` 签名后紧跟 2 字节机器类型，64 位（`0x8664`）显示成 `d?`，32 位（`0x014C`）显示成 `L`。`PE` 的位置不固定，别数偏移，肉眼找就行。dll 同样适用。

游戏能跑起来的话还有个办法：任务管理器 → 详细信息 → 右键列标题勾选「平台」列，直接显示 x86/x64。

### 识别虚幻引擎游戏（两个 exe）

目录里有 `Engine\` 文件夹、或 exe 名带 `-Win64-Shipping` 的就是虚幻引擎游戏。这类游戏的可执行文件有两个：

```
<GameDir>\BobaCafeSimulator.exe                    启动器，只有 ~254KB
<GameDir>\BobaCafeSimulator\Binaries\Win64\
    BobaCafeSimulator-Win64-Shipping.exe           真正的游戏本体，上百 MB
```

| 操作 | 用哪个 exe |
|---|---|
| Steamless 去 DRM | **Shipping exe**（Steam Stub 打在它上面） |
| Unsteam 的 `exe_file` | **启动器 exe**（由它拉起 Shipping exe） |
| 判断位数 | 看 Shipping exe |

Shipping exe 的 Stub 没去掉的话，补丁装得再对也会秒退或提示 Steam 未运行。

## 方案1：Unsteam（在线联机）

Unsteam 让游戏伪装成 Steam 的免费占位标题 Spacewar（AppID 480）运行，在破解玩家之间模拟联机。**需要 Steam 客户端登录**；只能和同样打过 Unsteam 补丁的玩家联机，不能和正版玩家一起玩。

### 1. （可选）用 Steamless 去 DRM

只有游戏 exe 带 Steam Stub（SteamDRM 包装）才需要这一步。打开 `Steamless.exe`，拖入游戏可执行文件，点 Unpack File。

- 提示 `This file dose not appear to be packed with steamstub!` 说明没有 Steam 加密，跳过。
- 成功会生成 `游戏名.unpacked.exe`。把原 exe 改名备份（如 `游戏名.exe.old`），再把 unpacked 版改名为原 exe 名。

虚幻引擎游戏拖的是 Shipping exe，不是启动器（见「识别虚幻引擎游戏（两个 exe）」）。

### 2. 部署 Unsteam 并配置

把 `unsteam/{x64,x86}/*`（一般是 x64）复制到游戏目录，运行 `unsteam_loader64.exe`，生成 `unsteam.ini`。关键配置：

```ini
[loader]
exe_file=Game.exe            ; 【必改】游戏可执行文件名
dll_file=unsteam64.dll

[game]
offline_mode=0               ; 0 = 在线，1 = 强制离线
steam_id=
player_name=YourName         ; 默认是打包者的名字，建议改掉
real_app_id=replace_that     ; 【必改】游戏的 Steam AppID，获取方法见「前置准备」
fake_app_id=480              ; Spacewar，不用改
language=english
beta_name=public
saves_path=saves
game_launch_options=
```

`exe_file` 填启动器 exe 的文件名；虚幻引擎游戏别填成 Shipping exe（见「识别虚幻引擎游戏（两个 exe）」）。

### 3. （可选）替换 EOS SDK

存在 `EOSSDK-Win64-Shipping.dll` 时，说明游戏用 EOS 联机，按「EOS 联机」一节处理。

### 4. 启动

确保 Steam 已登录，两种方式任选：

1. 直接运行游戏可执行文件。失败一般是 unsteam 版本架构不对，换 x64/x86。
2. 用 `unsteam_loader.exe` 启动。

成功的标志：Steam 状态栏显示正在玩 **Spacewar**。

## 方案2：GBE Fork（离线 / 局域网）

GBE Fork 直接替换游戏的 `steam_api(64).dll`，让游戏以为 Steam 在运行。**不依赖 Steam 客户端，但无法在线联机**，只能局域网或同配置玩家间联机。

### 1. （可选）用 Steamless 处理 exe

同方案1第 1 步：Steamless 去掉 exe 上的 SteamDRM 包装。没 DRM 的文件安全跳过，不会损坏。虚幻引擎游戏对 Shipping exe 跑（见「识别虚幻引擎游戏（两个 exe）」）。

### 2. 找 steam_api(64).dll

游戏目录搜 `steam_api*.dll`，两种情况：

- **只有一个**（通用/Unity 引擎）：替换这个 DLL，`steam_settings` 放它旁边。
- **有两个**（Unreal Engine 游戏）：

```
<GameDir>\Engine\Binaries\ThirdParty\Steamworks\Steamv157\Win64\steam_api64.dll
<GameDir>\<GameName>\Binaries\Win64\steam_api64.dll
```

UE 引擎启动时从 **Engine 目录**加载 `steam_api64.dll`，不是游戏主目录。只替换 Engine 目录那个，`steam_settings` 也放 Engine 目录。游戏主目录的 DLL 保持原版不动。

### 3. 备份原版 DLL

复制要替换的 DLL，重命名成 `steam_api64.dll.old`。后续生成接口文件要用这个备份。

### 4. 替换成模拟器 DLL

从 GBE Fork 发布包（`emu-win-release`）复制对应架构的 DLL 覆盖：

- 64 位游戏：`regular\x64\steam_api64.dll`
- 32 位游戏：`regular\x86\steam_api.dll`

模拟器 DLL 约 7–11MB，原版约 200–400KB，大小一眼能区分。UE 游戏主目录的 DLL 不动。

### 5. 创建 steam_settings 目录

在模拟器 DLL 同级建 `steam_settings` 文件夹。UE 引擎放 Engine 目录，通用引擎放游戏 exe 同级。

### 6. 放 steam_appid.txt

建 `steam_settings\steam_appid.txt`，只写纯数字 AppID（获取见「前置准备」）。

### 7. 生成 steam_interfaces.txt（推荐）

接口版本不匹配会导致崩溃或功能缺失。用 GBE Fork 里的 `generate_interfaces_x64.exe`（或 x86 版）对备份的原版 DLL 跑一次，生成在工具当前目录，移到 `steam_settings\` 里。必须对原版 DLL 跑，不能用模拟器 DLL。

### 8. （可选）配置 INI

`steam_settings.EXAMPLE\` 有模板，按需复制到 `steam_settings\`，去掉 `.EXAMPLE` 中缀：

- `configs.user.ini`：`local_save_path=./path/relative/to/dll` 把存档存到游戏目录而非 `%appdata%`；`account_name=Player` 改游戏内名字
- `configs.main.ini`：`offline=0` 离线模式
- `configs.app.ini`：`unlock_all=1` 解锁全部 DLC

### 9. （可选）替换 EOS SDK

同方案1第 3 步，按「EOS 联机」一节处理。

## 方案3：uc-online2（在线联机）

uc-online2 和 Unsteam 一样靠 Spacewar（AppID 480）伪装联机，但用法更直接：不用 loader，直接把游戏的 `steam_api(64).dll` 换成它的 DLL。**需要 Steam 客户端运行**；只能和打同款补丁的玩家联机。还带 DLC 解锁和加密票据模拟（`EmulateTicket`），Unsteam 没有这两项。

### 1. （可选）用 Steamless 去 DRM

同方案1第 1 步。exe 解不开 SteamStub 时（如 Dave the Diver），uc-online2 还能用 `union-crax.ini` 里的 `GetStubbedLol=true` 在游戏运行时直接补，连 exe 都不用改。

### 2. 替换 steam_api(64).dll

从 [Releases](https://github.com/UnionCrax-Team/uc-online2/releases) 下载最新版，解压后把对应架构的 DLL 复制到游戏目录覆盖：

- 64 位游戏：`steam_api64.dll`
- 32 位游戏：`steam_api.dll`

原版想备份就先改名（如 `steam_api64.dll.old`），替换方式与 GBE Fork 一致。UE 游戏同样只替换实际加载的那份（见方案2第 2 步）。

### 3. 创建 union-crax.ini

在游戏可执行文件旁建 `union-crax.ini`，没有这个文件时 AppID 固定为 480 且插件不加载：

```ini
[Settings]
AppId=480          ; 伪装用 AppID，默认 480（Spacewar），一般不用改
ogAppId=3683770    ; 【必改】游戏真实 AppID，用于 overlay 和票据模拟
PluginsFolder=plugins
GetStubbedLol=false
UnlockDLC=211,212  ; 要解锁的 DLC AppID，逗号分隔
EmulateTicket=false
```

### 4. （可选）替换 EOS SDK

同方案1第 3 步，按「EOS 联机」一节处理。

### 5. 启动

先确保 Steam 已登录，再直接运行游戏 exe。报认证失败就重启 Steam 再试。

成功的标志和方案1一样：Steam 状态栏显示正在玩 **Spacewar**。

### 已知问题：Steam overlay 失效

Shift+Tab 呼不出 overlay。作者在 [issue #1](https://github.com/UnionCrax-Team/uc-online2/issues/1) 里给过一个办法：把 Steam 安装目录的 `steamclient.dll` 和 `GameOverlayRenderer.dll` 复制到游戏目录。实测无效，overlay 还是出不来，等作者修。

## EOS 联机（Nemirtingas Epic Emulator）

游戏自带的正版 `EOSSDK-Win64-Shipping.dll`（通常十几 MB）会连接 Epic 服务器验证账号、所有权、DLC。Nemirtingas Epic Emulator 在本机模拟这些验证：游戏调用的 EOS 函数正常返回，但结果本地生成，绕过 Epic 登录与验证。

适用条件：游戏目录存在 `EOSSDK-Win64-Shipping.dll`（一般在游戏二进制目录或子目录，如 `binaries/win64/`）。

### 1. 备份并替换

搜索游戏里所有 `EOSSDK-Win64-Shipping.dll`（有的游戏有多份），把原版改名备份（如加 `.old` 后缀），再把 Nemirtingas 的 DLL 复制到原路径覆盖。不确定加载哪份就全部替换。

### 2. 启动生成配置

直接启动游戏，模拟器会在游戏工作目录自动生成配置文件 `NemirtingasEpicEmu.json`。

### 3. （可选）修改配置

用记事本打开 `NemirtingasEpicEmu.json`，填一个自己能记住的用户名，这样生成的身份 ID 固定且唯一：

```json
{
  "username": "MyAwesomeUsername"
}
```

只填这一行即可：`epicid` 与 `productuserid` 会自动生成。不同玩家只要用户名不同，身份就不同，联机不会串号。

常用字段：

| 字段                        | 默认值         | 说明                                                            |
| --------------------------- | -------------- | --------------------------------------------------------------- |
| `username`                  | `DefaultName`  | 你的名字，用于生成身份 ID；部分游戏用它显示游戏内昵称           |
| `appid`                     | 自动/留空      | 匹配同款游戏的房间，房主与玩家需一致                            |
| `savepath`                  | 空（游戏目录） | 存档/成就保存位置；填 `appdata` 则存到 `%appdata%`              |
| `disable_online_networking` | `false`        | `true` 时禁用公网连接（只留局域网/VPN），开了崩溃就改回 `false` |
| `unlock_dlcs`               | `false`        | `true` 时尝试解锁全部 DLC                                       |
| `log_level`                 | `OFF`          | 排障时设 `DEBUG`，完事改回 `OFF`                                |

### 4. 确认已生效

- `NemirtingasEpicEmu.json` 已生成/更新 → DLL 被加载了。
- `log_level` 设为 `DEBUG` 后启动，日志里出现 `EOS_Connect_Login` 等调用记录 → 已接管 EOS API。
- 游戏能正常创建/加入联机房间，且不再弹出 Epic 登录提示。

### 5. 排障

- **游戏崩溃或提示 EOS 初始化失败**：确认替换了实际加载的那份 DLL（有多份就全换）；删除 `NemirtingasEpicEmu.json` 让它重新生成；`disable_online_networking` 改回 `false`；`log_level: DEBUG` 看日志。
- **查 EOS 的游戏 appid**：原参考站 epicdata.info 已停摆。只做联机匹配的话，房主和所有玩家填同一个值就行。需要真实 appid（DLC/成就模拟）时用 [egdata.app](https://egdata.app)：搜到游戏进详情页，URL 里 `/offers/<ID>` 的 ID 先查 `api.egdata.app/offers/<ID>` 拿 namespace，再查 `api.egdata.app/items?namespace=<namespace>`，主条目 `releaseInfo` 的 `appId` 字段。房主与玩家需一致才能匹配。
- **多人联机身份冲突**：每个玩家填不同的 `username`。同一个人的多台电脑建议共用同一份配置文件，避免 ID 变化。
- **和其他 EOS 补丁冲突**：功能重叠的补丁二选一，保留一个删另一个。本模拟器可替换 FreeTP 的 EpicFix。
## 工具与资源

### 自动化工具

- **ARMGDDN Autocracker**：基于 GBE Fork，右键游戏文件夹自动完成补丁。仓库 https://github.com/KaladinDMP/ARMGDDN-Autocracker
- **SteamAutoCracker**：封装 Steamless + Goldberg，一键去 DRM 和替换 DLL。仓库 https://github.com/BigBoiCJ/SteamAutoCracker

### 其他补丁工具

- **GreenLuma** —— Steam 客户端补丁，支持在线联机，Windows 专用。https://cs.rin.ru/forum/viewtopic.php?f=29&t=103709
- **SLSsteam** —— Steam 客户端补丁，支持在线联机，Linux 专用。https://github.com/AceSLS/SLSsteam
- **WeMod 破解**（游戏修改器）。https://github.com/k1tbyte/Wemod-Patcher

### 游戏资源

- https://cs.rin.ru/forum —— 破解工具与 STEAM 游戏资源的主论坛
- 论坛找不到时，最稳的办法是 Steam 商店购买 → 下载 → 退款。

### 更多参考

- https://rentry.org/pgames
- https://ripped.guide/PC-Software/Games/#cracking-tools
- https://cs.rin.ru/forum/viewforum.php?f=29


---

> 作者: Nite  
> URL: https://www.nite07.com/zh-cn/posts/game-crack-tutorial/  

