https://github.com/iartorias/noceg
NoCEG - Steamworks CEG DRM Resolver
https://github.com/iartorias/noceg
ceg cpp drm patcher steam steamworks
Last synced: 5 days ago
JSON representation
NoCEG - Steamworks CEG DRM Resolver
- Host: GitHub
- URL: https://github.com/iartorias/noceg
- Owner: iArtorias
- License: other
- Created: 2025-07-28T06:46:49.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2025-08-04T12:35:00.000Z (3 months ago)
- Last Synced: 2025-08-31T09:44:15.326Z (about 2 months ago)
- Topics: ceg, cpp, drm, patcher, steam, steamworks
- Language: C
- Homepage:
- Size: 616 KB
- Stars: 17
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# NoCEG - Steamworks CEG DRM Resolver
[](https://github.com/iArtorias/noceg/releases)
> Patch Valve's CEG DRM for legally owned games to ensure long-term accessibility and preservation.> [!IMPORTANT]
> NoCEG only works with legally owned games. The game executable that Steam downloads only works with your account and system. NoCEG needs that information to work.> [!CAUTION]
> This should only be used for personal backups. The final executable still has your hardware info, and is illegal to distribute.
---## Overview
**NoCEG** is a toolkit designed to fully patch out Valveโs **CEG (Custom Executable Generation)** DRM from *legally purchased* Steam games. Its main purpose is **digital preservation** ensuring that games remain playable even after CEG servers are no longer available.
---
## Components
This repository includes **three core tools** required for resolving and patching CEG protection:
### ๐ `noceg_signatures`
> A command-line tool to scan the executable for CEG related functions and export the required information to `noceg.json`.### ๐ง `noceg`
> A dynamic library that uses the vectored exception handling to resolve CEG protected functions (both constant and stolen/masked ones) during runtime using the data from the previously generated `noceg.json`.### ๐งฐ `noceg_patcher`
> An utility that applies the final patch to a CEG protected executable.---
## ๐ ๏ธ Usage
### **1. Download the latest release**
Get the latest binaries from the [Releases](https://github.com/iArtorias/noceg/releases) page.
---
### **2. Signature extraction**
Run the following command:
```bash
noceg_signatures.exe "Path\To\GameExecutable.exe"
```Or simply **drag and drop** the executable onto `noceg_signatures.exe`.
---
### **3. Inject the runtime library**
- Rename the original `steam_api.dll` to `steam_api_org.dll`.
- Copy `steam_api.dll` from the NoCEG package into the gameโs directory.
- Place the generated `noceg.json` file into the same folder.Now, launch the game. A confirmation window should appear:
> โ **"Successfully finished the task!"**### โ ๏ธ Special cases for certain games
#### `ShouldRestart` option
The following titles require `"ShouldRestart": true` in `noceg.json`:- Homefront
- The Darkness II
- Star Trek
- F.E.A.R. 3
- Risen 2To enable this option, update your configuration from:
```json
"ShouldRestart": false
```
to
```json
"ShouldRestart": true
```#### `BreakpointType` option
Some games (e.g. `Duke Nukem: Forever`) use integrity checks that can detect software breakpoints, which may lead to incorrect values.
If this occurs, switch to hardware breakpoints by updating:```json
"BreakpointType": 1
```
to
```json
"BreakpointType": 2
```---
### **4. Final Patching**
Drag the original executable onto `noceg_patcher.exe`.
A modified version will be generated with a suffix like `_noceg.exe` or `_noceg.dll`.---
### **5. Cleanup**
- Delete `NoCEG`โs `steam_api.dll`.
- Rename `steam_api_org.dll` back to `steam_api.dll`.---
## ๐ฎ Supported games (tested)
```txt
โ 007โข Legends
โ Aliens: Colonial Marines
โ Aliens vs. Predatorโข
โ Bionic Commando
โ Call of Dutyยฎ: Black Ops
โ Call of Dutyยฎ: Modern Warfare 2
โ Call of Dutyยฎ: Modern Warfare 3
โ Deadpool
โ DeathSpank
โ DeathSpank: Thongs Of Virtue
โ Duke Nukem: Forever
โ DiRT Showdown
โ DiRT Showdown Demo
โ F1 2012โข
โ F1 Race Stars
โ F.E.A.R. 3
โ GRID 2
โ Homefront
โ Homefront Demo
โ Just Cause 2
โ Just Cause 2 Demo
โ Kane & Lynch 2: Dog Days
โ Kane & Lynch 2: Dog Days Demo
โ Lara Croft and the Guardian of Light
โ Lara Croft and the Guardian of Light Demo
โ Madballs in...Babo: Invasion
โ Madballs in...Babo: Invasion Demo
โ Mafia II
โ Mafia II Demo
โ Prototype 2
โ Risen 2
โ Risen 2 Demo
โ Saints Row: The Third
โ Saints Row IV Inauguration Station
โ Sid Meier's Ace Patrol
โ Sid Meier's Ace Patrol: Pacific Skies
โ Sid Meier's Civilization V
โ Sid Meier's Civilization V Demo
โ Sniper Elite V2
โ Sniper Elite Nazi Zombie Army
โ Sniper Elite Nazi Zombie Army 2
โ Spec Ops: The Line
โ The Amazing Spider-Man
โ The Bureau: XCOM Declassified
โ The Darkness II
โ The Darkness II Demo
โ The Lord of the Rings: War in the North
โ Viking: Battle for Asgard
โ Warhammer 40,000: Space Marine
โ Warhammer 40,000: Space Marine Demo
โ XCOM: Enemy Unknown
```---
## ๐ซ Unsupported titles
> These are using allocated buffers for CEG protected functions and are **not supported** at this point:
- โ F1 2013โข / F1 2014โข
- โ Call of Dutyยฎ: Black Ops II
- โ Sid Meier's Civilizationยฎ: Beyond Earthโข
- โ XCOM: Enemy Within---
## Compilation & Dependencies
To compile this project from source, use **Visual Studio 2022**.
This project uses the following open-source libraries:
- [`nlohmann/json`](https://github.com/nlohmann/json) โ JSON for Modern C++
- [`mem`](https://github.com/0x1F9F1/mem) โ Memory utility helpers
- [`zydis`](https://github.com/zyantific/zydis) โ Disassembler framework---
## Why NoCEG?
- Preserve access to the games long after CEG DRM servers shut down.
- Designed exclusively for **legally owned** copies of games.
- Reverse-engineered with care for accuracy and modularity.---
## ๐ License
Check [LICENSE](LICENSE).
---
## ๐ฌ Disclaimer
> โ ๏ธ **This tool is intended solely for educational and preservation purposes.**
> Please ensure compliance with local laws and terms of service.---