General Game Cracking Guide
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
- Unsteam — online patch (Steam client must be running)
- uc-online2 — online patch, single-DLL replacement (Steam client must be running)
- GBE Fork — offline/LAN emulator
- Steamless — SteamDRM removal tool
- Nemirtingas Epic Emulator — EOS online emulator
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:
- Run the game executable directly. If it fails, the unsteam build is probably the wrong architecture — try the x64/x86 variant.
- 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_settingsnext to it. - Two (Unreal Engine game):
<GameDir>\Engine\Binaries\ThirdParty\Steamworks\Steamv157\Win64\steam_api64.dll
<GameDir>\<GameName>\Binaries\Win64\steam_api64.dllUE 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”).
7. Generate steam_interfaces.txt (recommended)
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/dllkeeps saves in the game folder instead of%appdata%;account_name=Playersets your in-game nameconfigs.main.ini:offline=0offline modeconfigs.app.ini:unlock_all=1unlock 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=false4. (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.jsoncreated/updated → the DLL got loaded.- With
log_levelset toDEBUG, the log showsEOS_Connect_Loginand 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.jsonto regenerate; setdisable_online_networkingback tofalse; checklog_level: DEBUGlogs. - 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, queryapi.egdata.app/offers/<ID>for the namespace, thenapi.egdata.app/items?namespace=<namespace>and read theappIdfield in the main entry’sreleaseInfo. 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
- ARMGDDN Autocracker: built on GBE Fork, right-click a game folder and it patches everything automatically. https://github.com/KaladinDMP/ARMGDDN-Autocracker
- SteamAutoCracker: wraps Steamless + Goldberg for one-click DRM removal and DLL replacement. https://github.com/BigBoiCJ/SteamAutoCracker
Other patch tools
- GreenLuma — Steam client patch with online support, Windows only. https://cs.rin.ru/forum/viewtopic.php?f=29&t=103709
- SLSsteam — Steam client patch with online support, Linux only. https://github.com/AceSLS/SLSsteam
- WeMod crack (trainer). https://github.com/k1tbyte/Wemod-Patcher
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.