Skip to content

Luca1991/DiscCheckEmu

Repository files navigation


DiscCheckEmu

DiscCheckEmu is a tool designed to emulate disc checks found in many disc-based games and software without the need for physical media. By intercepting API calls and modifying their behavior on the fly, DiscCheckEmu provides a seamless experience for users looking to enjoy their favorite legacy software without the hassle of keeping CDs or ISOs mounted.

As computers increasingly lack CD-ROM drives, accessing old disc-based games and software has become impractical. DiscCheckEmu addresses this issue by allowing users to emulate disc checks, enabling them to run their favorite titles directly from their hard drives, without physically patching the game executable.

Please note that DiscCheckEmu works only for games and software that employs standard disc checks and/or passive copy protections. Old "active" disc-based protections like SafeDisc or SecuROM are not directly supported by this software. This is due to the nature of these protections using segment encryption and IAT obfuscation.

This is a list of copy protections that are known to be successfully handled by DCE:

Important

DiscCheckEmu is NOT intended for piracy: you must own the original game/software disc to legally use this tool!

DCEConfigs Repository

If you are just looking for DCEConfig files created by other users, go to: https://github.com/Luca1991/DCEConfigs

Features

  • Intercept API calls and modify their behavior without patching the executable.
  • File redirection.
  • Virtual Drive definition.
  • In-Memory Patcher.
  • API Logger (only available in Debug builds).
  • Utilize a generic API hooking engine configurable through YAML files.
  • Easy to use injector for automatically creating the target process and injecting the DLL.
  • Fully open-source and customizable to suit individual needs.

Components

  • DCELoader: Main executable responsible for creating target process and injecting the DCEAPIHook DLL.
  • DCEAPIHook: DLL used to hook APIs and modify their behavior.
  • DCEConfig: YAML configuration file tailored to specific software, used by both DCELoader and DCEAPIHook. DCEConfig serves as the blueprint for configuring both DCELoader and DCEAPIHook. This file must be customized by the user for each target software, detailing API hooking and process creation parameters. Refer to the ConfigurationDocumentation file for assistance in writing a functional configuration file.

Building

This project utilizes CMake. To build it, install Visual Studio 2022 with C++ packages and load the project as a CMake solution. Once loaded, press F7 to build the solution.

How to use

  1. Download the latest release from the download section and extract the archive.

  2. Copy DCELoader.exe, DCEAPIHook.dll and DCEConfig.yaml to your game/software installation directory.

  3. Edit DCEConfig.yaml writing a configuration for your target, then run DCELoader.exe and enjoy.

If you are receiving the "Missing MSVCP140.dll" error, make sure to download and install the latest x86 Microsoft Visual C++ Redistributables.

Acknowledgements

Projects Using DiscCheckEmu

Here are some open-source projects that are using DiscCheckEmu:

SafeDiscLoader: Allows playing SafeDisc (version 2.7 to the latest 4.9) protected games on modern Windows. SafeDiscLoader utilizes DCEAPIHook.dll to emulate additional disc checks found in many SafeDisc-protected games.