游戏破解指南
Steam 游戏的破解(打补丁)思路分三类:要在破解玩家之间联机,用 Unsteam 或 uc-online2;只玩单机或局域网,用 GBE Fork。游戏用 Epic Online Services(EOS)联机时,在线方案都要再配一个 Nemirtingas Epic Emulator 接管 EOS 层(见「EOS 联机」一节)。
前置准备
- Unsteam —— 联机补丁(需 Steam 客户端运行)
- uc-online2 —— 联机补丁,替换单个 DLL(需 Steam 客户端运行)
- GBE Fork —— 离线/局域网模拟器
- Steamless —— SteamDRM 移除工具
- Nemirtingas Epic Emulator —— EOS 联机模拟器
干净的 Steam 游戏文件在 CS.RIN.RU 上找,方式见文末「工具与资源」。
查找 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。关键配置:
[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 已登录,两种方式任选:
- 直接运行游戏可执行文件。失败一般是 unsteam 版本架构不对,换 x64/x86。
- 用
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.dllUE 引擎启动时从 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 下载最新版,解压后把对应架构的 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 且插件不加载:
[Settings]
AppId=480 ; 伪装用 AppID,默认 480(Spacewar),一般不用改
ogAppId=3683770 ; 【必改】游戏真实 AppID,用于 overlay 和票据模拟
PluginsFolder=plugins
GetStubbedLol=false
UnlockDLC=211,212 ; 要解锁的 DLC AppID,逗号分隔
EmulateTicket=false4. (可选)替换 EOS SDK
同方案1第 3 步,按「EOS 联机」一节处理。
5. 启动
先确保 Steam 已登录,再直接运行游戏 exe。报认证失败就重启 Steam 再试。
成功的标志和方案1一样:Steam 状态栏显示正在玩 Spacewar。
已知问题:Steam overlay 失效
Shift+Tab 呼不出 overlay。作者在 issue #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 固定且唯一:
{
"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:搜到游戏进详情页,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 商店购买 → 下载 → 退款。