{"id":30655089,"url":"https://github.com/iartorias/noceg","last_synced_at":"2025-10-14T17:26:15.089Z","repository":{"id":306883012,"uuid":"1027533969","full_name":"iArtorias/noceg","owner":"iArtorias","description":"NoCEG - Steamworks CEG DRM Resolver","archived":false,"fork":false,"pushed_at":"2025-08-04T12:35:00.000Z","size":631,"stargazers_count":17,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-31T09:44:15.326Z","etag":null,"topics":["ceg","cpp","drm","patcher","steam","steamworks"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iArtorias.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-28T06:46:49.000Z","updated_at":"2025-08-30T17:02:07.000Z","dependencies_parsed_at":"2025-07-28T08:41:00.529Z","dependency_job_id":"99ba2e72-3d1e-4fab-9a99-e083e0ab6416","html_url":"https://github.com/iArtorias/noceg","commit_stats":null,"previous_names":["iartorias/noceg"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/iArtorias/noceg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iArtorias%2Fnoceg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iArtorias%2Fnoceg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iArtorias%2Fnoceg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iArtorias%2Fnoceg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iArtorias","download_url":"https://codeload.github.com/iArtorias/noceg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iArtorias%2Fnoceg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279020077,"owners_count":26086806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ceg","cpp","drm","patcher","steam","steamworks"],"created_at":"2025-08-31T09:44:19.795Z","updated_at":"2025-10-14T17:26:15.084Z","avatar_url":"https://github.com/iArtorias.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NoCEG - Steamworks CEG DRM Resolver\n[![GitHub All Releases](https://img.shields.io/github/downloads/iArtorias/noceg/total.svg)](https://github.com/iArtorias/noceg/releases)\n\u003e Patch Valve's CEG DRM for legally owned games to ensure long-term accessibility and preservation.\n\n\u003e [!IMPORTANT]  \n\u003e 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.\n\n\u003e [!CAUTION]\n\u003e This should only be used for personal backups. The final executable still has your hardware info, and is illegal to distribute.\n---\n\n## Overview\n\n**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.\n\n---\n\n## Components\n\nThis repository includes **three core tools** required for resolving and patching CEG protection:\n\n### 🔍 `noceg_signatures`\n\u003e A command-line tool to scan the executable for CEG related functions and export the required information to `noceg.json`.\n\n### 🧠 `noceg`\n\u003e 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`.\n\n### 🧰 `noceg_patcher`\n\u003e An utility that applies the final patch to a CEG protected executable.\n\n---\n\n## 🛠️ Usage\n\n### **1. Download the latest release**\n\nGet the latest binaries from the [Releases](https://github.com/iArtorias/noceg/releases) page.\n\n---\n\n### **2. Signature extraction**\nRun the following command:\n```bash\nnoceg_signatures.exe \"Path\\To\\GameExecutable.exe\"\n```\n\nOr simply **drag and drop** the executable onto `noceg_signatures.exe`.\n\n---\n\n### **3. Inject the runtime library**\n\n- Rename the original `steam_api.dll` to `steam_api_org.dll`.\n- Copy `steam_api.dll` from the NoCEG package into the game’s directory.\n- Place the generated `noceg.json` file into the same folder.\n\nNow, launch the game. A confirmation window should appear:\n\u003e ✅ **\"Successfully finished the task!\"**\n\n### ⚠️ Special cases for certain games\n\n#### `ShouldRestart` option  \nThe following titles require `\"ShouldRestart\": true` in `noceg.json`:\n\n- Homefront  \n- The Darkness II  \n- Star Trek  \n- F.E.A.R. 3  \n- Risen 2\n\nTo enable this option, update your configuration from:\n\n```json\n\"ShouldRestart\": false\n```\nto\n```json\n\"ShouldRestart\": true\n```\n\n#### `BreakpointType` option  \nSome games (e.g. `Duke Nukem: Forever`) use integrity checks that can detect software breakpoints, which may lead to incorrect values.\nIf this occurs, switch to hardware breakpoints by updating:\n\n```json\n \"BreakpointType\": 1\n```\nto\n```json\n \"BreakpointType\": 2\n```\n\n---\n\n### **4. Final Patching**\n\nDrag the original executable onto `noceg_patcher.exe`.  \nA modified version will be generated with a suffix like `_noceg.exe` or `_noceg.dll`.\n\n---\n\n### **5. Cleanup**\n\n- Delete `NoCEG`’s `steam_api.dll`.\n- Rename `steam_api_org.dll` back to `steam_api.dll`.\n\n---\n\n## 🎮 Supported games (tested)\n\n```txt\n✔ 007™ Legends\n✔ Aliens: Colonial Marines\n✔ Aliens vs. Predator™\n✔ Bionic Commando\n✔ Call of Duty®: Black Ops\n✔ Call of Duty®: Modern Warfare 2\n✔ Call of Duty®: Modern Warfare 3\n✔ Deadpool\n✔ DeathSpank\n✔ DeathSpank: Thongs Of Virtue\n✔ Duke Nukem: Forever\n✔ DiRT Showdown\n✔ DiRT Showdown Demo\n✔ F1 2012™\n✔ F1 Race Stars\n✔ F.E.A.R. 3\n✔ GRID 2\n✔ Homefront\n✔ Homefront Demo\n✔ Just Cause 2\n✔ Just Cause 2 Demo\n✔ Kane \u0026 Lynch 2: Dog Days\n✔ Kane \u0026 Lynch 2: Dog Days Demo\n✔ Lara Croft and the Guardian of Light\n✔ Lara Croft and the Guardian of Light Demo\n✔ Madballs in...Babo: Invasion\n✔ Madballs in...Babo: Invasion Demo\n✔ Mafia II\n✔ Mafia II Demo\n✔ Prototype 2\n✔ Risen 2\n✔ Risen 2 Demo\n✔ Saints Row: The Third\n✔ Saints Row IV Inauguration Station\n✔ Sid Meier's Ace Patrol\n✔ Sid Meier's Ace Patrol: Pacific Skies\n✔ Sid Meier's Civilization V\n✔ Sid Meier's Civilization V Demo\n✔ Sniper Elite V2\n✔ Sniper Elite Nazi Zombie Army\n✔ Sniper Elite Nazi Zombie Army 2\n✔ Spec Ops: The Line\n✔ The Amazing Spider-Man\n✔ The Bureau: XCOM Declassified\n✔ The Darkness II\n✔ The Darkness II Demo\n✔ The Lord of the Rings: War in the North\n✔ Viking: Battle for Asgard\n✔ Warhammer 40,000: Space Marine\n✔ Warhammer 40,000: Space Marine Demo\n✔ XCOM: Enemy Unknown\n```\n\n---\n\n## 🚫 Unsupported titles\n\n\u003e These are using allocated buffers for CEG protected functions and are **not supported** at this point:\n\n- ❌ F1 2013™ / F1 2014™  \n- ❌ Call of Duty®: Black Ops II  \n- ❌ Sid Meier's Civilization®: Beyond Earth™  \n- ❌ XCOM: Enemy Within  \n\n---\n\n## Compilation \u0026 Dependencies\n\nTo compile this project from source, use **Visual Studio 2022**.\n\n\nThis project uses the following open-source libraries:\n\n- [`nlohmann/json`](https://github.com/nlohmann/json) – JSON for Modern C++  \n- [`mem`](https://github.com/0x1F9F1/mem) – Memory utility helpers  \n- [`zydis`](https://github.com/zyantific/zydis) – Disassembler framework  \n\n---\n\n## Why NoCEG?\n\n- Preserve access to the games long after CEG DRM servers shut down.\n- Designed exclusively for **legally owned** copies of games.\n- Reverse-engineered with care for accuracy and modularity.\n\n--- \n\n## 📄 License\n\nCheck [LICENSE](LICENSE).\n\n--- \n\n## 💬 Disclaimer\n\n\u003e ⚠️ **This tool is intended solely for educational and preservation purposes.**  \n\u003e Please ensure compliance with local laws and terms of service.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiartorias%2Fnoceg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiartorias%2Fnoceg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiartorias%2Fnoceg/lists"}