Cheat countermeasures
-
noccy
- Trained

- Posts: 45
- Joined: 01 Aug 2010, 22:21
- Location: Karlstad, Sweden
Cheat countermeasures
I've been reading a bit on her about cheaters in the main mp lobby. Wouldn't it be possible to create a simple anti-cheating scheme to at least attempt to hinder the lameness?
One idea would be a basic file hashing scheme with a challenge/response. This idea is full of holes and caveats, but it could perhaps evolve into something a bit more reliable. If the sever were to send a "range" and a "challenge" to the client, such as "1234-1245" and "helloworld!" (obviously, this would just be any random string), the client would then apply that range to one of the key files of the game in order to extract the data and then concatenate it with the challenge. The result would be hashed and sent back to the server. Nothing would prevent the server from requesting a "revalidation" at any time.
I know that implementing this on the binaries might be a whole lot of trouble considering the platforms supported, debug vs. non-debug builds etc. It could however be performed on the main data files or something that can be considered consistent across platforms.
Surely this would not get rid of cheating alltogether, but it would at least hinder some of it. Cheating the game would just be a matter of rewriting your l33t h4xx0r version to calculate the sums from a copy of the original data files or so, but it would still require two sets of the data files to be installed and maintained. The same hashing could of course be performed on the data as it's loaded from the archives as an added verification, but the advantage of the server asking for a specific range would be that it would be a genuine hell to create a "lookup table" in order to fake the verification, especially considering the challenge being added to the mix.
Players that fail the verification could either be kicked (which might be a bad idea as the server would be unaware about trunk builds etc) or marked with a red skull or questionmark or similar to indicate that the verification failed or that the player is using an unofficial version of the game.
What do you guys think? Doable or simply not worth it?
One idea would be a basic file hashing scheme with a challenge/response. This idea is full of holes and caveats, but it could perhaps evolve into something a bit more reliable. If the sever were to send a "range" and a "challenge" to the client, such as "1234-1245" and "helloworld!" (obviously, this would just be any random string), the client would then apply that range to one of the key files of the game in order to extract the data and then concatenate it with the challenge. The result would be hashed and sent back to the server. Nothing would prevent the server from requesting a "revalidation" at any time.
I know that implementing this on the binaries might be a whole lot of trouble considering the platforms supported, debug vs. non-debug builds etc. It could however be performed on the main data files or something that can be considered consistent across platforms.
Surely this would not get rid of cheating alltogether, but it would at least hinder some of it. Cheating the game would just be a matter of rewriting your l33t h4xx0r version to calculate the sums from a copy of the original data files or so, but it would still require two sets of the data files to be installed and maintained. The same hashing could of course be performed on the data as it's loaded from the archives as an added verification, but the advantage of the server asking for a specific range would be that it would be a genuine hell to create a "lookup table" in order to fake the verification, especially considering the challenge being added to the mix.
Players that fail the verification could either be kicked (which might be a bad idea as the server would be unaware about trunk builds etc) or marked with a red skull or questionmark or similar to indicate that the verification failed or that the player is using an unofficial version of the game.
What do you guys think? Doable or simply not worth it?
-
chekwob
- Rookie

- Posts: 27
- Joined: 10 Aug 2010, 21:21
Re: Cheat countermeasures
This is already done. In the game it's known as a Data Check, and you will see messages about it if you run the debug version.
Thin ice is the most exciting when you swing at it with a pickaxe.
-
Dalton
- Trained

- Posts: 361
- Joined: 11 Jan 2010, 19:41
- Location: Canada
Re: Cheat countermeasures
Chekwob knows all about that... (sounds like cheeky behaviorchekwob wrote:This is already done. In the game it's known as a Data Check, and you will see messages about it if you run the debug version.
-
noccy
- Trained

- Posts: 45
- Joined: 01 Aug 2010, 22:21
- Location: Karlstad, Sweden
Re: Cheat countermeasures
Ah, excellent
When will that feature be available in the stable release, and how does it indicate it's success/failure? 
-
chekwob
- Rookie

- Posts: 27
- Joined: 10 Aug 2010, 21:21
Re: Cheat countermeasures
It's already in. Whenever someone is kicked at the start of a game for "incompatible mods", it means they failed the data check.
Thin ice is the most exciting when you swing at it with a pickaxe.
-
Zarel
- Elite

- Posts: 5770
- Joined: 03 Jan 2008, 23:35
- Location: Minnesota, USA
Re: Cheat countermeasures
Yeah, what the other guys said. The feature's been available since 2.2.4. Verification schemes are ridiculously easy to circumvent, which is why we use it mostly to prevent accidental corruption caused by mods.
-
noccy
- Trained

- Posts: 45
- Joined: 01 Aug 2010, 22:21
- Location: Karlstad, Sweden
Re: Cheat countermeasures
Ah, I see. And I agree with you Zarel, which is why I proposed the above algorithm. The "random chunk + challenge" algorithm would be a bit harder to circumvent as there is no way to calculate all the possible checksums in advance 
-
chekwob
- Rookie

- Posts: 27
- Joined: 10 Aug 2010, 21:21
Re: Cheat countermeasures
The checksum wouldn't have to be faked if the stats data is left intact.noccy wrote:The "random chunk + challenge" algorithm would be a bit harder to circumvent as there is no way to calculate all the possible checksums in advance
Thin ice is the most exciting when you swing at it with a pickaxe.
-
milo christiansen
- Regular

- Posts: 749
- Joined: 02 Jun 2009, 21:23
- Location: Perrinton Michigan
Re: Cheat countermeasures
So do a hash on the binary too.
In general, if you see glowing, pulsating things in the game, you should click on them.
- Demigod Game Ganual
- Demigod Game Ganual
-
chekwob
- Rookie

- Posts: 27
- Joined: 10 Aug 2010, 21:21
Re: Cheat countermeasures
The Mac OSX binary isn't the same as the Windows one, and on Linux you're expected to compile it yourself. Different build environments can create different binaries.milo christiansen wrote:So do a hash on the binary too.
Thin ice is the most exciting when you swing at it with a pickaxe.
-
Zarel
- Elite

- Posts: 5770
- Joined: 03 Jan 2008, 23:35
- Location: Minnesota, USA
Re: Cheat countermeasures
Keep a copy of the legitimate data. Load your cheat data, but when asked for checksums, take them from your legitimate data. Bam, circumvented.noccy wrote:Ah, I see. And I agree with you Zarel, which is why I proposed the above algorithm. The "random chunk + challenge" algorithm would be a bit harder to circumvent as there is no way to calculate all the possible checksums in advance
Keep a copy of the legitimate binary, follow instructions above.milo christiansen wrote:So do a hash on the binary too.
Not to mention that we would have to drop support for many nonstandard distributions of Linux and BSD if we went this route.
-
milo christiansen
- Regular

- Posts: 749
- Joined: 02 Jun 2009, 21:23
- Location: Perrinton Michigan
Re: Cheat countermeasures
True.
so the only way to go is some kind of dedicated server?
so the only way to go is some kind of dedicated server?
In general, if you see glowing, pulsating things in the game, you should click on them.
- Demigod Game Ganual
- Demigod Game Ganual
-
noccy
- Trained

- Posts: 45
- Joined: 01 Aug 2010, 22:21
- Location: Karlstad, Sweden
Re: Cheat countermeasures
You mean like offloading some of the logic to the server?milo christiansen wrote:so the only way to go is some kind of dedicated server?
-
milo christiansen
- Regular

- Posts: 749
- Joined: 02 Jun 2009, 21:23
- Location: Perrinton Michigan
Re: Cheat countermeasures
Yes, if you mean doing things like power rate checks and such during a game.
Come to think of it wouldn't something like having every computer run a simple check on the power flow rate/units built/oil owned to check for example, that no one has 1000000 power with 4 oil in the early game, be a good way to at least slow cheaters down? Such checks could be droped after the first 20-30 minutes as cheaters won't like the wait.
Come to think of it wouldn't something like having every computer run a simple check on the power flow rate/units built/oil owned to check for example, that no one has 1000000 power with 4 oil in the early game, be a good way to at least slow cheaters down? Such checks could be droped after the first 20-30 minutes as cheaters won't like the wait.
In general, if you see glowing, pulsating things in the game, you should click on them.
- Demigod Game Ganual
- Demigod Game Ganual
-
m1ndgames
- Trained

- Posts: 142
- Joined: 04 Jun 2010, 20:30
- Location: Germany
Re: Cheat countermeasures
If you had to register in the Forums before you could login to the login server, you could add cheat reports and ban the accounts.
oh well... i suggested this allready like a gazillion times, i fu**in coded the whole multiplayer server and still: no progress on the client side, no answers in the topic... screw this!
oh well... i suggested this allready like a gazillion times, i fu**in coded the whole multiplayer server and still: no progress on the client side, no answers in the topic... screw this!
Stuff: My Music - Game Hosting Guide
Coding: New Lobbyserver - Needs suggestions
Maps: Bridgebattle - FightClub
Coding: New Lobbyserver - Needs suggestions
Maps: Bridgebattle - FightClub