# 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](https://cs.rin.ru/forum/viewtopic.php?f=29&t=134707) — online patch (Steam client must be running)
- [uc-online2](https://github.com/UnionCrax-Team/uc-online2) — online patch, single-DLL replacement (Steam client must be running)
- [GBE Fork](https://github.com/Detanup01/gbe_fork) — offline/LAN emulator
- [Steamless](https://github.com/atom0s/Steamless) — SteamDRM removal tool
- [Nemirtingas Epic Emulator](https://cs.rin.ru/forum/viewtopic.php?f=29&t=105551) — EOS online emulator

Clean Steam game files can be found on [CS.RIN.RU](https://cs.rin.ru/forum) (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:

```ini
[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").

### 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/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](https://github.com/UnionCrax-Team/uc-online2/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:

```ini
[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](https://github.com/UnionCrax-Team/uc-online2/issues/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:

```json
{
  "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](https://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

- **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.

### More reading

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


---

> Author: Nite  
> URL: https://www.nite07.com/en/posts/game-crack-tutorial/  

