Mousetrap3 is a multi-component anti-cheat system containing a anti-cheat client which detects known cheats and injectors, a server mod which could ban cheaters and talk to the back-end and lastly a back-end which stored the bans.
Return to Castle Wolfenstein 1.0 had no anti-cheat system when I did this project. In order to catch cheaters, we had to monitor players, repeatedly make demo’s and collectively decide whether the player was cheating. This was a painful process as the caught cheaters could easily spoof their banned IP’s and try again under a different nickname.
I had the idea of checking the client by looking at some cheat source codes from known cheat websites. These sources hooked in between the engine and client mod. I figured I could do the same and somehow communicate to the server.
The result is a simple client hook which;
- generated a GUID from the player’s hard drive
- scans the process list for known injectors
- scans the loaded module list for known cheats
- scans for known activated cheat variables
- sends a list of client variables to the server
Once the client has analysed the player’s instance, it would send the result to the server.
The Mousetrap server would then kick and ban that cheating player by GUID by sending it to the back-end.
Besides checking the players for cheats, the server would enforce a variable limit to the 4 variables known to be used for warping or misuse;
In hindsight, the server was a bit messy and not super secure (although the data was obscured). I also changed tactics, instead of using QMM, I created a “Frankenstein library” which did the same thing as the client hook, but now for the game mod on the serverside.
The back-end was a collection of simple PHP scripts which was connected to a MySQL server.
I did this project in 2009 and I wasn’t the experienced developer I am now so it was all a bit messy.
The setup worked quite good but people were reluctant of installing it because it meant they had to manually install stuff. Also most of the server admins didn’t want to cooperate because they were scared of losing players. In the end I shut the project down because there wasn’t enough interest in it and I started with the RTCW 1.0PB project which worked better anyway.