游戏破解指南

目录

Steam 游戏的破解(打补丁)思路分三类:要在破解玩家之间联机,用 Unsteam 或 uc-online2;只玩单机或局域网,用 GBE Fork。游戏用 Epic Online Services(EOS)联机时,在线方案都要再配一个 Nemirtingas Epic Emulator 接管 EOS 层(见「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 已登录,两种方式任选:

  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 下载最新版,解压后把对应架构的 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=false

4. (可选)替换 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。

工具与资源

自动化工具

其他补丁工具

  • 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 商店购买 → 下载 → 退款。

更多参考

编辑此页

目录