SafePlay is a lightweight Windows DLL designed to keep Ragnarok Online clients and other PC games fair. It injects into the game process, provides a trusted client configuration, and continuously scans the system for known cheat tools.
A companion SafePlay.exe launcher is provided to start RagnaPH.exe from a trusted wrapper.
Target Users: Game developers, publishers, and server administrators who want to enforce fair play.
- Embedded configuration –
clientinfo.xmlis stored Base64-encoded in the DLL and is served from memory so the game always connects to the approved server settings. - Integrity check – the library verifies that
Data.inicontains the expected resource listing before starting. - API hooking – kernel32 file APIs are patched via the Import Address Table to redirect file access to the in-memory configuration and to hide the virtual file handle.
- Background protection thread – every five seconds the DLL enumerates running processes and evaluates them against several
detection vectors:
- executable names on a banned list
- suspicious window titles
- loaded modules
- static memory signatures (e.g.
4RTools)
- User feedback – during startup a small non-blocking popup with a progress bar is displayed.
- When any banned tool is detected a message box identifies the offending program and the game is terminated.
- Clone the repository:
git clone https://github.com/projectbaluga/SafePlay.git cd SafePlay
- Open
SafePlay.slnin Visual Studio 2022. - Build the
SafePlayproject to produceSafePlay.dll. - Place
SafePlay.dllbeside your game executable or inject it at runtime.
- Edit
data/clientinfo.xmland encode it intoSafePlay/clientinfo.h(Base64) to change the embedded server address, port, or other client settings. Data.inimust havedata.grfas its first entry – the DLL validates this file before enabling protection.- Extend the banned executable, window, module, or memory signature lists in
SafePlay/dllmain.cppto detect additional tools.
Run SafePlay.exe to launch the game. The launcher sets a special
environment variable that SafePlay.dll checks during startup. If
RagnaPH.exe is executed directly the variable is missing, the DLL
displays an error, and the game terminates. This ensures the client
always starts through the protected launcher.
- Cross-game compatibility
- External configuration file support
- Logging/audit trail
- Cloud-based signature updates
- Localization and user-friendly config tools
- CI/CD pipelines and automated tests
This project is licensed under the MIT License.
