General Game Cracking Guide

Contents

Cracking (patching) a Steam game comes down to three approaches: use Unsteam or uc-online2 when you want online play among patched copies, GBE Fork when single-player or LAN is enough. If the game connects through Epic Online Services (EOS), the online routes also need a Nemirtingas Epic Emulator for the EOS layer (see “EOS online play”).

Prerequisites

Clean Steam game files can be found on CS.RIN.RU (see “Tools and resources” at the end).

Finding the Steam AppID

The AppID is the game’s numeric ID on the Steam store, needed by all three routes (Unsteam’s real_app_id, uc-online2’s ogAppId, GBE’s steam_appid.txt). Get it up front.

Open the game’s Steam store page — the number after /app/ in the URL is the AppID. For example store.steampowered.com/app/3683770/ → AppID 3683770.

Alternatively search the game name in the store’s address bar, or look it up on SteamDB (https://steamdb.info ).

Checking whether the exe is 32-bit or 64-bit

Confirm the game’s architecture before picking a DLL or patch build. Easiest check: the steam_api filename itself — steam_api64.dll means 64-bit; plain steam_api.dll needs a closer look. Notepad alone is enough: drag the exe into Notepad (click “Still open” if it warns the file is too big), find the one readable line among the gibberish — This program cannot be run in DOS mode — then look a little further for the two letters PE and check the characters right after it:

You see Architecture
PE followed by d? 64-bit
PE followed by L 32-bit

Why it works: a 2-byte machine type follows the PE signature — 64-bit (0x8664) renders as d?, 32-bit (0x014C) as L. The PE offset varies, so don’t count bytes, just eyeball it. Works for DLLs too.

If the game runs, Task Manager also works: Details tab → right-click a column header → enable the “Platform” column, which shows x86/x64.

Recognizing Unreal Engine games (two exes)

A game is Unreal Engine if the directory contains an Engine\ folder or an exe named with -Win64-Shipping. These games ship two executables:

<GameDir>\BobaCafeSimulator.exe                    Launcher, only ~254KB
<GameDir>\BobaCafeSimulator\Binaries\Win64\
    BobaCafeSimulator-Win64-Shipping.exe           The actual game, hundreds of MB
Operation Which exe
Steamless DRM removal Shipping exe (the Steam Stub is attached to it)
Unsteam’s exe_file Launcher exe (it starts the Shipping exe)
Architecture check Look at the Shipping exe

If the Shipping exe’s Stub wasn’t removed, the game instantly exits or claims Steam isn’t running no matter how correctly the patch is installed.

Route 1: Unsteam (online)

Unsteam makes the game run under the cover of Steam’s free placeholder title Spacewar (AppID 480), emulating multiplayer among patched copies. The Steam client must be logged in; you can only play with other players using the same Unsteam patch — not with legitimate copies.

1. (Optional) Remove DRM with Steamless

Only needed when the game exe has a Steam Stub (SteamDRM wrapper). Open Steamless.exe, drag the game executable in, click Unpack File.

  • This file dose not appear to be packed with steamstub! means there’s no Steam encryption — skip.
  • A successful unpack produces GameName.unpacked.exe. Rename the original exe as a backup (e.g. GameName.exe.old), then rename the unpacked file to the original exe name.

Unreal Engine games: drop in the Shipping exe, not the launcher (see “Recognizing Unreal Engine games (two exes)”).

2. Deploy and configure Unsteam

Copy unsteam/{x64,x86}/* (usually x64) into the game directory, run unsteam_loader64.exe, which generates unsteam.ini. Key settings:

[loader]
exe_file=Game.exe            ; [REQUIRED] game executable filename
dll_file=unsteam64.dll

[game]
offline_mode=0               ; 0 = online, 1 = force offline
steam_id=
player_name=YourName         ; defaults to the packager's name — change it
real_app_id=replace_that     ; [REQUIRED] Steam AppID, see "Prerequisites"
fake_app_id=480              ; Spacewar, leave as is
language=english
beta_name=public
saves_path=saves
game_launch_options=

exe_file takes the launcher exe’s filename; for Unreal Engine games don’t point it at the Shipping exe (see “Recognizing Unreal Engine games (two exes)”).

3. (Optional) Replace the EOS SDK

If EOSSDK-Win64-Shipping.dll exists, the game uses EOS for online play — follow the “EOS online play” section.

4. Launch

With Steam logged in, either way works:

  1. Run the game executable directly. If it fails, the unsteam build is probably the wrong architecture — try the x64/x86 variant.
  2. Launch via unsteam_loader.exe.

Success looks like: Steam shows you’re “playing” Spacewar.

Route 2: GBE Fork (offline / LAN)

GBE Fork replaces the game’s steam_api(64).dll, so the game thinks Steam is running. No Steam client needed, but no online play — LAN or same-config players only.

1. (Optional) Process the exe with Steamless

Same as Route 1, step 1: Steamless strips the SteamDRM wrapper from the exe. Files without DRM are skipped safely, no harm done. Unreal Engine games: run it on the Shipping exe (see “Recognizing Unreal Engine games (two exes)”).

2. Find steam_api(64).dll

Search the game folder for steam_api*.dll. Two cases:

  • Only one (generic/Unity engine): replace that DLL, put steam_settings next to it.
  • Two (Unreal Engine game):
<GameDir>\Engine\Binaries\ThirdParty\Steamworks\Steamv157\Win64\steam_api64.dll
<GameDir>\<GameName>\Binaries\Win64\steam_api64.dll

UE loads steam_api64.dll from the Engine directory at startup, not the game’s main directory. Replace the Engine one, and put steam_settings there too. Leave the game’s main-directory DLL untouched.

3. Back up the original DLL

Copy the DLL you’re about to replace and rename it to steam_api64.dll.old. You’ll need this backup later for the interfaces file.

4. Replace with the emulator DLL

From the GBE Fork release package (emu-win-release), copy the DLL matching the game’s architecture:

  • 64-bit: regular\x64\steam_api64.dll
  • 32-bit: regular\x86\steam_api.dll

The emulator DLL is ~7–11MB vs the original’s ~200–400KB, obvious at a glance. Leave the UE game’s main-directory DLL alone.

5. Create the steam_settings directory

Create a steam_settings folder next to the emulator DLL. UE engine: in the Engine directory. Generic engine: next to the game exe.

6. Add steam_appid.txt

Create steam_settings\steam_appid.txt containing only the numeric AppID (see “Prerequisites”).

Mismatched interface versions cause crashes or missing features. Run GBE Fork’s generate_interfaces_x64.exe (or x86) against the backed-up original DLL. It creates steam_interfaces.txt in the tool’s current directory — move it into steam_settings\. Always run it on the original DLL, never the emulator.

8. (Optional) Configure the INI files

steam_settings.EXAMPLE\ has templates: copy what you need to steam_settings\ and strip the .EXAMPLE infix.

  • configs.user.ini: local_save_path=./path/relative/to/dll keeps saves in the game folder instead of %appdata%; account_name=Player sets your in-game name
  • configs.main.ini: offline=0 offline mode
  • configs.app.ini: unlock_all=1 unlock all DLC

9. (Optional) Replace the EOS SDK

Same as Route 1, step 3 — handle it per the “EOS online play” section.

Route 3: uc-online2 (online)

uc-online2 spoofs the game as Spacewar (AppID 480) for online play, same idea as Unsteam, but simpler to apply: no loader, just replace the game’s steam_api(64).dll with its DLL. The Steam client must be running; you can only play with other players on the same patch. It also ships DLC unlocking and encrypted ticket emulation (EmulateTicket), neither of which Unsteam has.

1. (Optional) Remove DRM with Steamless

Same as Route 1, step 1. When Steamless can’t unpack the exe (Dave the Diver, for example), uc-online2 can also patch SteamStub on the fly with GetStubbedLol=true in union-crax.ini — the exe stays untouched.

2. Replace steam_api(64).dll

Download the latest release from Releases, extract it, and copy the DLL matching the game’s architecture over the original in the game directory:

  • 64-bit: steam_api64.dll
  • 32-bit: steam_api.dll

Rename the original first if you want a backup (e.g. steam_api64.dll.old); same replacement procedure as GBE Fork. UE games: replace only the DLL that actually gets loaded (see Route 2, step 2).

3. Create union-crax.ini

Create union-crax.ini next to the game executable. Without it, the AppID defaults to 480 and plugins don’t load:

[Settings]
AppId=480          ; spoofed AppID, default 480 (Spacewar), usually leave as is
ogAppId=3683770    ; [REQUIRED] the game's real AppID, used for overlay and ticket emulation
PluginsFolder=plugins
GetStubbedLol=false
UnlockDLC=211,212  ; DLC AppIds to unlock, comma-separated
EmulateTicket=false

4. (Optional) Replace the EOS SDK

Same as Route 1, step 3 — handle it per the “EOS online play” section.

5. Launch

Make sure Steam is logged in first, then run the game executable directly. On an auth failure error, restart Steam and try again.

Success looks the same as Route 1: Steam shows you’re “playing” Spacewar.

Known issue: Steam overlay broken

Shift+Tab doesn’t bring up the overlay. The author suggested a fix in issue #1: copy steamclient.dll and GameOverlayRenderer.dll from the Steam install directory into the game directory. Didn’t work when I tested — the overlay still never shows. Waiting on a proper fix.

EOS online play (Nemirtingas Epic Emulator)

The game’s original EOSSDK-Win64-Shipping.dll (usually a dozen-odd MB) contacts Epic’s servers to verify account, ownership, and DLC. Nemirtingas Epic Emulator simulates all of this locally: the EOS calls the game makes still return values, but they’re generated on your machine, bypassing Epic’s login and validation.

Applied when: the game directory contains EOSSDK-Win64-Shipping.dll (usually in the binary dir or a subdir like binaries/win64/).

1. Back up and replace

Find every EOSSDK-Win64-Shipping.dll in the game (some games ship several). Rename each original as a backup (e.g. add a .old suffix), then copy the Nemirtingas DLL over the original path. When you’re not sure which copy gets loaded, replace them all.

2. Launch to generate the config

Start the game — the emulator auto-creates NemirtingasEpicEmu.json in the game’s working directory.

3. (Optional) Edit the config

Open NemirtingasEpicEmu.json in a text editor and set a username you’ll remember, which makes your generated identity ID stable and unique:

{
  "username": "MyAwesomeUsername"
}

That one line is enough: epicid and productuserid are auto-generated. Different usernames → different identities, so players don’t collide.

Common fields:

Field Default Meaning
username DefaultName Your name, seeds the identity ID; some games show it as your in-game name
appid auto/blank Matches rooms of the same game — host and players must agree
savepath blank (game dir) Where saves/achievements go; appdata stores them under %appdata%
disable_online_networking false true disables internet (LAN/VPN only); if the game crashes with it on, switch back to false
unlock_dlcs false true tries to unlock all DLC
log_level OFF Set DEBUG to troubleshoot, back to OFF afterwards

4. Verify it’s working

  • NemirtingasEpicEmu.json created/updated → the DLL got loaded.
  • With log_level set to DEBUG, the log shows EOS_Connect_Login and similar calls → the emulator has taken over the EOS API.
  • The game creates/joins rooms normally and no longer asks for an Epic login.

5. Troubleshooting

  • Game crashes or says EOS init failed: confirm you replaced the DLL that’s actually loaded (if there are several, replace them all); delete NemirtingasEpicEmu.json to regenerate; set disable_online_networking back to false; check log_level: DEBUG logs.
  • Looking up the EOS appid: the original reference site epicdata.info is dead. For matchmaking alone, the host and all players can just use the same value. If you need the real appid (DLC/achievement emulation), use egdata.app: find the game’s detail page, take the <ID> from its /offers/<ID> URL, query api.egdata.app/offers/<ID> for the namespace, then api.egdata.app/items?namespace=<namespace> and read the appId field in the main entry’s releaseInfo. Host and players must match to find each other.
  • Identity collisions in multiplayer: every player uses a different username. One person on several machines should reuse the same config file so the ID stays put.
  • Conflicts with another EOS patch: keep one of the overlapping patches and delete the other. This emulator can replace FreeTP’s EpicFix.

Tools and resources

Automation tools

Other patch tools

Game sources

  • https://cs.rin.ru/forum — the main forum for crack tools and Steam game files
  • When the forum doesn’t have it, the safest route is: buy on the Steam store → download → refund.

More reading

Edit this page

Contents