Skip to main content
GameDev.net gamedev.net
🔒 Locked

Open Source and Anti Cheat

Started by Promit Jan 6, 2006 at 8:22 PM 32 replies 19.1k views
Original Post
Promit
Promit
Some weeks ago I was discussing with a few friends about whether or not it was possible to secure a completely open source game (an FPS specifically) against cheating. I'll focus this discussion on FPSes because they are historically the most cheat-infested and because they offer up a number of interesting challenges in ways that people can cheat. When I asy "completely" open source, I mean that no closed source components are allowed. We cn't rely on a magic closed source black box like PunkBuster to fix things for us. Now source code merely facilitates seeing the behavior of a program, but it makes what might be an eventual achievement on the part of a reverse engineer doable almost immediately. First, let's quickly take a look at the ways people have historically cheated. Wallhacks are one that are fairly striaghtforward; for games built on the HL1 engine for example, the OpenGL dll can be trivially hooked -- a few tweaks to rendering modes, and suddenly players are visible through walls. Another simple kind is to ues custom models, particularly simple with games that are built to be moddable. Simply use a player model which is larger than normal (a "spike" model for example) and hiding in weird corner spots becomes ineffective. Another thing that's been done on occasion is to use hacked video or mouse drivers to gain an advantage; these methods are less relable but largely undetectable. The most powerful and most complex hacks are highly intrusive, going directly into the process memory, interloping in-between game dlls, or otherwise dipping deeply into the system to control and rewire it. The usual approach to preventing these measures has been to use client side code, either as part of the game itself or as a seperate process, that attempts to detect these hacks. Scanning for video DLLs in non-standard directories, signatures of known evil processes in memory, seeing if a sketchy "debugger" has attached to your game, or looking for weird system-wide hooks. Many of these methods are largely reactive, since they rely on known evil signatures, not unlike a virus scanner. A quick look at games nowadays makes it clear that these methods are of limited effectiveness, as it's a constant fight between the game developers trying to detect evil programs and the hackers trying to evade detection. Open source makes this a basically useless approach, since your scanning methods are easy to see and thus blocked without that much difficulty. (For example, memory scans can be deftly cut down with clever virtual allocations and tweaking of page access permissions.) We can't even checksum anything, because our checksumming code is open source and we can't guarantee that it's doing what it's supposed to and not simply returning what it already knows are the correct results. Without getting deeper into that discussion, suffice to say that it is impossible to completely prevent cheating without resorting to psychotic measures like RSA encrypting every frame on the server, sending it to the client, allowing only trusted drivers, etc. Even then it might not be possible (theoretically speaking) to guarantee that the player is not cheating without using a TPM. The approach up to this point has been to make cheating a general pain, and that's worked to some extent but not really. If you know where to look, a cheat for any of the popular FPSes can be picked up easily. So if the situation is hopeless, why am I posting? Well, when I originally discussed this with my friends, one of whom is a specialist in this sort of security, we couldn't figure out any kind of client-side undefeatable system, and the truth is that there probably isn't, and you can probably prove that there isn't. You guessed it, we move to the server side of things. The key point is this -- we only need to identify a cheater and ban his ass; it's not necesary to make it impossible to cheat. The server is open source too, so technically there's no reason somebody can't modify the server to allow cheating. But since the server sets the rules to begin with, that's not a problem. What we need to do is to detect all forms of cheating on the server. I believe this is possible and reasonable to do, although it's likely to be somewhat CPU intensive on the server. Enter HackCam. The idea is that the server has at least as much information as any client has. Obviously some of this information wil be difficult to get (we can't afford to render every client's screen on the server and run image analysis on every frame, for example). However, the server should be able to do at least enough analysis to throw out obvious cheaters, and the discussions I've read of HackCam indicate that it is fairly good at identifying cheaters even amongst pro-class players. If we have a level where a considerable amount of visibility precalculation has been done, then the server could conceivably run very fast queries as to whether or not it is possible that one player knows the presence of another. Certain behaviors can then be identified as suspicious, and we can mark players who accumulate a lot of suspicious activity with some kind of likelihood of cheating. (Bayesian techniques might assist accuracy as well.) Speedhacks are easy to catch. Wallhacks are more difficult, but the HackCam interview suggests that it's entirely in the realm of possibility. Examination of a player's behavior could also identify use of aimbots and the like. I don't have the AI background to know how much of this is possible, but the things I've heard and see about HackCam are very heartening. It turns out that we get a number of interesting benefits from this kind of analysis, rather than simply attacking the programs involved in cheating. For one thing, players are now allowed to modify any part of the game code, including the rendering system. I can write up a new shader for players or walls or whatever and use it, and as long as the shader doesn't cause me to be able to see things I shouldn't, it's perfectly alright. Also, a few oddball brands of cheats can now be picked up. The one that comes to mind is "ghosting", the process of using out-of-game voice-chat and a spectating and/or dead teammate to give you extra information about what is going on. We're no longer reacting to cheats that appear; instead of blacklisting the illegitimate, we are whitelisting the legitimate. There are disadvantages as well, of course. For one thing, implementing this kind of an intelligent analysis system is probably not easy. There's a fair bit of temporal information required, and the player needs to get the benefit of the doubt in all cases. We have to deal with crazy cases where the player may not have been cheating. For example, the case of the rifle barrel stick out past the end of the box is going to be difficult to detect, but the case where the rifle barrel was sticking through is going to be a hell of a lot more irritating. Also, this method is likely to only catch the outright cheaters; people who are using more subtle configurations (an aimbot with a visibility of 2 degrees, for example) are going to be difficult or impossible to seperate from the legitimate players. So, as far as replies from you guys go I'm looking for a couple different things. If you want to challenge me and say that client side prevention is possible, go right ahead -- I'll enjoy tearing you apart [grin] I was quite irritated with the prospect that cheating might actually be literally, provably impossible to prevent, and server side heuristic analysis provides what seems to be a way out, though again I don't know how challenging it will be to implement or how well it will do in practice. If anyone's attempted something like this bfore, I'd love to hear about it. In the end, I just want something interesting to read and ponder on as a response to this thread/rant [smile]
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
M2tM
M2tM
You can totally make a hackproof game like this:

Client:
-get keyboard input
-send keyboard input to the server
-get jpeg(or equivilant) screenshot (prevents texture swapping)

Server:
-get keyboard input from all clients
-maintain all game information
-send pixel information to each client for every frame

_____"You're using a screwdriver to nail some glue to a ming vase. " -ToohrVyk
Promit
Promit
Quote:
Original post by DrEvil
Sarcasm aside :) Closed source games can't even be secured, so why would open source games be able to?
The whole point of my post was that they can't be secured, and more importantly that it's not necessary to secure them.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
M2tM
M2tM
Quote:
The key point is this -- we only need to identify a cheater and ban his ass; it's not necesary to make it impossible to cheat


You see, the problem with this in an open source environment is that it probably didn't cost them anything to get that account and it won't cost them anything to get another. In fact, even if you IP ban or MAC address ban them, there are ways around that which serious griefers will use. If you somehow get a hardware profile of their system that might work, but if you can't trust a client about their cheating or not, how can you trust that they didn't fudge the profile?

Basically, your system is not secure and can not be. You can't secure against cheaters and you can't even ban people who do cheat. Worse yet, they have the source code and can probably come up with some really creative hacks (more easily than without source certainly.)

Steam and Battlenet are workable systems for one (and only one) reason. You have to purchase a game and that game is attached to one account. If you get banned on that account then you're fuck out of luck unless you buy another copy of the game for 50 bucks or whatever it's worth. This is a very strong deterrant against hackers because they are not being IP banned or anything to do with their computer. It's a ban completely against their ID that they had to purchase to play with. Unfortunately free games do not have this same luxury of personal investment with accounts and thus do not carry the same weight in a ban.

The fact that the person has the source code and can compile a new client means that they can very simply return whatever response that will make the server happy there is nothing weird going on when in fact there is.
_____"You're using a screwdriver to nail some glue to a ming vase. " -ToohrVyk
Promit
Promit
Hmm, that's a fair point. Even if we identify a cheater and throw them out, they could come back 10 seconds later as someone else (and maybe with a seperate IP and even Mac address).

I've got nothing for that one. I'll have to think on it.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
chaosgame
chaosgame
Have them accept an agreement when they create an account that says that a virus will unleash on their computer if they cheat. If they cheat, unleash a routine that clears the BIOS and screws with the low-level-formatting on their HD.
"Are you threatening me, Master Jedi?" - Chancellor Palpatine
DanWelty
DanWelty
I believe I have the (an) answer to your problem.

Quote:
Original post by Promit
The key point is this -- we only need to identify a cheater and ban his ass; it's not necessary to make it impossible to cheat.


I think you need to take this a step further than you have. It is neither necessary to make it impossible to cheat, nor necessary to detect/ban cheaters. It is necessary to make cheating pointless.

As an example, take a look at wall-hacks. By whatever method the wall-hack is achieved (clear walls, spiked models, etc.), the point is that cheaters are obtaining information they shouldn't have. There is a 100% fool proof way to prevent all wall-hacks, and that is simply not to send the client information he shouldn't have. If the server is not sending me the locations of players I shouldn't be able to see, I could hook the OpenGL dll and stick spiked models everywhere, and I still wouldn't be able to see anything I shouldn't.

As another example, take a look at speed hacks. With proper sanity checking server side (or one of a few other solutions) they become a non issue.

I believe that a well designed game will be immune to hacks by nature, not because it has any kind of active cheat prevention or detection, but simply because it was designed to render cheats useless in the first place.

So I think you should reconsider your anti-cheat approach to one of making your game immune to hacks by design, rather than one of trying to tack on cheat prevention/detection after the fact.
Promit
Promit
Quote:
Original post by dwelty
As an example, take a look at wall-hacks. By whatever method the wall-hack is achieved (clear walls, spiked models, etc.), the point is that cheaters are obtaining information they shouldn't have. There is a 100% fool proof way to prevent all wall-hacks, and that is simply not to send the client information he shouldn't have. If the server is not sending me the locations of enemies I shouldn't be able to see, I could hook the OpenGL dll and stick spiked models everywhere, and I still wouldn't be able to see anything I shouldn't.
But you need to transmit players in the vicinity anyway for correct sound playback. In CS, sound can be critical to what you do and can tip you off as to what's going on behind a wall or a box. You have to send those positions, and combined with a quick tweak that renders the positions of sounds, you've got a decent wallhack/ESP right there.

Speed hacks, on the other hand, I never understood why they were possible in the first place.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
bytecoder
bytecoder
Quote:
Original post by dwelty
I believe I have the (an) answer to your problem.

Quote:
Original post by Promit
The key point is this -- we only need to identify a cheater and ban his ass; it's not necessary to make it impossible to cheat.


I think you need to take this a step further than you have. It is neither necessary to make it impossible to cheat, nor necessary to detect/ban cheaters. It is necessary to make cheating pointless.

As an example, take a look at wall-hacks. By whatever method the wall-hack is achieved (clear walls, spiked models, etc.), the point is that cheaters are obtaining information they shouldn't have. There is a 100% fool proof way to prevent all wall-hacks, and that is simply not to send the client information he shouldn't have. If the server is not sending me the locations of players I shouldn't be able to see, I could hook the OpenGL dll and stick spiked models everywhere, and I still wouldn't be able to see anything I shouldn't.

As another example, take a look at speed hacks. With proper sanity checking server side (or one of a few other solutions) they become a non issue.

I believe that a well designed game will be immune to hacks by nature, not because it has any kind of active cheat prevention or detection, but simply because it was designed to render cheats useless in the first place.

So I think you should reconsider your anti-cheat approach to one of making your game immune to hacks by design, rather than one of trying to tack on cheat prevention/detection after the fact.

You're right. This is the only way to completely prevent hacking. Unfortunately, it also requires the server to do the work for every client, which makes it somewhat unpractical at the moment.

Your post gave me an idea, though. What if, instead of trying to ban players permanently for cheating, you just kick them out of the game? If a player cheats, he will be constantly kicked. You've effectively "banned" cheaters, because they can't cheat if they want to stay in the game.
bytecoder
bytecoder
Quote:
Original post by Promit
Quote:
Original post by dwelty
As an example, take a look at wall-hacks. By whatever method the wall-hack is achieved (clear walls, spiked models, etc.), the point is that cheaters are obtaining information they shouldn't have. There is a 100% fool proof way to prevent all wall-hacks, and that is simply not to send the client information he shouldn't have. If the server is not sending me the locations of enemies I shouldn't be able to see, I could hook the OpenGL dll and stick spiked models everywhere, and I still wouldn't be able to see anything I shouldn't.
But you need to transmit players in the vicinity anyway for correct sound playback. In CS, sound can be critical to what you do and can tip you off as to what's going on behind a wall or a box. You have to send those positions, and combined with a quick tweak that renders the positions of sounds, you've got a decent wallhack/ESP right there.

Speed hacks, on the other hand, I never understood why they were possible in the first place.

Well, you could always fudge the values a bit. Sound isn't something that needs to be terribly precise; just have the server pick a random point within a certain fuzzy area around the player and send that. Of course, this requires finding out how much you can randomize it without affecting legitimate uses.
iMalc
iMalc
There are really 3 parts to it:
1. Deterrent. Legal mumbo jumbo, threat of 3 etc.
2. Detection of cheating. The tuff part.
3. Kick / banning offenders. This basically amounts to being able to identify the cheater and keeping them off the server.

There is a lot of detection that can be and should be done on the server. Obvious candidates are speedhacks and believe it or not, aimbots (to some extent).

For aimbotting, you can design the system so that instead of the client determining if he hit the target, or even sending the bullet trajectory to the server, it simply sends the heading and the number of bullets fired. The server knows what the random seed on that client was at that time, and can determine exactly what route the bullets would have taken, as the random seeds are in sync between client and server. If the view heading appears to be moving erratically, then the hacked client may be attempting to counter the randomness of the bullet direction, and this can quite easily be detected.
Now if it's supposed to be a hugely inaccurate gun (machine gun), then this will work, as you can't add accuracy on the client. But if it's a scout or something, then this wont work so well.

Wallhacks can be made more difficult, by doing better visibility determination and not relying on the z-buffer to hide the character behind the wall. Of course a hacked client can avoid running that code, so it wont stop that.
DanWelty
DanWelty
Quote:
Original post by Promit
But you need to transmit players in the vicinity anyway for correct sound playback. In CS, sound can be critical to what you do and can tip you off as to what's going on behind a wall or a box. You have to send those positions, and combined with a quick tweak that renders the positions of sounds, you've got a decent wallhack/ESP right there.



Why not only transmit the fact that a sound is being played? No need to say what made it. No need to point out the fact that it was a player, and transmit player coordinates. Even then, as you pointed out, a hack that renders sound origins could work, but I have to ask, So what? I don't play Counter-Strike, but I do play Day of Defeat (another Half-Life mod), and I can tell you that sound is extremely important there too. Actually I can usually tell very easily, with almost perfect accuracy, exactly where any person is in 3D space with less than half a second of a foot step sound. My point is that the sound already tells you exactly where a person is just by itself. If someone wants to render it visually, that's no advantage.

As long as you make sure to transmit the coordinates ONLY when they make a sound, and ONLY when the client would actually be able to hear it, then any "Sonic" wall-hack would be pretty useless. It wouldn't give you any info you didn't already have.


Quote:
Original post by bytecoder
You're right. This is the only way to completely prevent hacking. Unfortunately, it also requires the server to do the work for every client, which makes it somewhat unpractical at the moment.


Well, yes. I suppose that M2tM's idea isn't a bad one, based on my suggestion, but I do think it can be done more reasonably than that.

[Edited by - dwelty on January 6, 2006 10:38:23 PM]
RAZORUNREAL
RAZORUNREAL
For sound, if it's only stereo, just send the volume for each channel and leave the cracker to guess if it's in front, behind, above etc.
___________________________________________________David OlsenIf I've helped you, please vote for PigeonGrape!
Promit
Promit
Quote:
Original post by RAZORUNREAL
For sound, if it's only stereo, just send the volume for each channel and leave the cracker to guess if it's in front, behind, above etc.
Common setups today are: 2 speaker mono, 2 speaker stereo, 4 speakers, 5 speakers, 6 apeakers, 7 speakers, 8 speakers, headphones. With or without a sub for all except headphones. Kind of a pain.

Quote:
Why not only transmit the fact that a sound is being played? No need to say what made it. No need to point out the fact that it was a player, and transmit player coordinates.
You need 3D sound to be done correctly, and if you're playing player_step.ogg, well duh. As for whether it's an advantage, well, it's something that many hacks do (at least in the CS world).

Quote:
Well, you could always fudge the values a bit. Sound isn't something that needs to be terribly precise; just have the server pick a random point within a certain fuzzy area around the player and send that. Of course, this requires finding out how much you can randomize it without affecting legitimate uses.
Sure, but as dwelty points out, there are players -- lots of players, this isn't rare -- who can do extremely accurate pinpointing based on sound, to the point that some can actually knock your head off through a door. So you're playing with a fine line.

Quote:
Your post gave me an idea, though. What if, instead of trying to ban players permanently for cheating, you just kick them out of the game? If a player cheats, he will be constantly kicked. You've effectively "banned" cheaters, because they can't cheat if they want to stay in the game.
You need to meet more cheaters [grin] Cheating might be about gaining an advantage, but oftentimes it is simply about pissing off all present. Plus, they could hack auto-rejoin into the client easily.

Oh, and dwelty, how would you build in imunity to an aimbot? How do you remain unaffected by a hostile mouse driver?
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
LilBudyWizer
LilBudyWizer
Personally, I think it's backwards. I just don't get the idea of trusting an unknown individual in an unknown location running on an unknown machine with unknown resources at their disposal. How can I be certain I can trust a stranger in a mall to take my money to a jewelry store, buy a 5ct diamond ring for my wife and bring it to me so I can give it to her? I can't. If you could be certain you could trust them then they wouldn't be strangers. So to me the idea of insuring you can trust a stranger is fundamentally flawed.

Rather what I think is needed is managing the network. I don't mean the ethernet card, but rather who knows who. It's the wild west out there. A bunch of strangers you don't know from jack. But you play, you meet people, you learn you can trust some individuals. One thing you may learn you can trust about an individual is their judgement of others. So you feel safe trusting those they trust.

That's what's missing in most of these systems. Rather than an exclusive model it needs to be an inclusive model. If you are unknown you are untrusted. A modern computer can manage a truly massive list quickly and easily. You don't need $50 riding on the key, just a reputation. Throw away the key, get another, do it as often as you like, but when you do you are on the outside looking in. Being an unknown means being untrusted.

So you need basically two components. One is an authentication system. A means to insure a person is who they claim to be. If they are careless with their keys/passwords then you suffer the consequences just the same has inviting 300 of your closest friends to your home every weekend for a party. The other part is a management system. Most importantly you need to be able to delegate that to a trusted individual. Many don't want that adminstrative hassle, but some will go to great lengths to do it. Let those that don't benefit from those that do. Give those that do the tools they need to see the path an individual used to get into the system so they can not just judge individuals but also those that vouch for others.

Give the players the means to police the network and they will do an excellent job at it. Remove the burden on the individual though. It isn't who you know, but who you know and who they know. They need to multi-tiered and parallel networks. Large networks built from small networks and individual networks part of many networks. When it's all done and said individuals, networks and networks of networks laying their reputations on the line which is far more valuable to them than $50.

Personally, it isn't something for the idependant developer to do nor the individual commercial developer. Rather it is something the industry needs to do. They need to set aside the idea of assisting the player in determining who they can trust as a competitive advantage. The competitive advantage is in having a game people prefer to play and not in your ability to police a network.

The cold hard truth about hackers is they are not gamers. They are hackers. That's what they do, that's what entertains them. The people running around with hacked clients generally are not the ones that figured out how to do it, but rather people that downloaded a program or followed a write up. Put them in an environment where they are playing with nothing but others doing the same and they don't play because in that environment most look like idiots rather than gods. So it isn't the hacking that's the problem. It's their ability to torment, pester and annoy those that don't cheat. So all you really need is the ability to keep those that torment, pester and annoy out. They are not hard to identify because they are tormenting, pestering and annoying people. It's the the computer that is oblivious from that and can't tell them from anyone else. Yes, it takes a truly massive AI, it takes people.
Keys to success: Ability, ambition and opportunity.
caldiar
caldiar
well sound has never been too much of an issue. I play all my games (CS, Quake III & IV, Call of Duty, World of Warcraft) muted. Sound distracts the hell out of me.
In Call of Duty without sound Id get 100+ kills and <20 deaths. With sound, like 40 kills and 60 deaths. It's weird, I know, but I never use the sound. I just listen to Primus to get in rhythm.

Now, Ill admit that I have done some hacking in my time. However, my "hacking" is a spawn of curiosity to see how the game works and how I can rip it apart and twist it to my advantage. I get a kick out of finding exploits and flaws with programs. I don't enjoy griefing other players with these hacks though because I hate it when it's done to me. Ive used a wallhack once in Call of Duty to screw with this one guy I knew was hacking because he was shooting into bushes and killing me and others from across the Bocage map. So I threw up the hack and layed down and just followed him around taking him down every time he spawned until he got tired and logged out.

One thing I find interesting is some games have bugs in them that allow unintentional cheating.

For instance, Call of Duty (again)

I was playing on a Nvidia GeForce 2 videocard with updated drivers and I could see people through walls in some maps if they got close enough to a wall. I updated to a Nvidia GeForce FX 5200 and that went away though.

Hmmm....
I would think you should try out the Windows approach. Windows XP operating system stores the username and passwords to the local computer accounts in a SAM registry hive.
Not even the Administrator account can open this particular registry hive while working with the operating system.

So try this for banning I guess:

Have Server/Client like in typical setup

Have server create and encrypt a hash key unique for each client that connects to the server.
Upon first connection, this hash key is sent to the client and stored in a "registry hive" that is not accessible by the client at any time. Only the server can access it. This key is also permenately stored in the server registry hive for comparision.
Upon banning, tick off the hash key of say client 5 and when client 5 tries to connect, the server will load up the "registry" and compare hash keys. If they match then deny a connection.

*wonders if that would actually work*
Zipster
Zipster
Quote:
Original post by LilBudyWizer
*** Post removed because it was really long and un-quote-friendly ***

An inclusive social model based on an atmosphere of distrust? I agree that it doesn't make sense to trust strangers, but this sounds like the overly paranoid alternative. If you thought individual hackers were a problem, just put people into a group and tell them they can't trust outsiders. Or even each other, since people are perfectly capable of lying, manipulating, and gaining false trust. Without actually implementing the system we'd never know, but it could potentially turn into the Salem witch hunts or Cold War America, where everyone could be a Communist. Ultimately your method still relies on computer-based authentication and management systems, which simply shifts the point-of-attack by a hacker from individual clients and servers to this system.
Monder
Monder
Quote:
Unfortunately free games do not have this same luxury of personal investment with accounts and thus do not carry the same weight in a ban.


Open Source != Free. For example you could give all the source code away and then charge for the content or for an account on a master server which is used to find game servers etc. You could then ban cheating accounts from the master server and the cheater would have to buy a new account. Sure they could go grab the source and setup their own master server but does it really matter? As long as you keep them off the official master server then you know there's a place where you can get cheater free gaming.
DanWelty
DanWelty
Quote:
Original post by Promit
You need 3D sound to be done correctly, and if you're playing player_step.ogg, well duh. As for whether it's an advantage, well, it's something that many hacks do (at least in the CS world).

lol. Well, I had in mind an audio engine that generated the sound in real time, much like the graphics engine would do with lighting effects, rather than playing a prerecorded player_step.ogg sound. If you had such a system, and you just transmitted the fact that a sound should be generated, but not that a player was making it, then the hack wouldn't be able to tell if it was a player, a nade landing, a dropped ammo box or weapon, a dead body falling to the ground...

As for "sonic" wall-hacks being done... I had no idea. I figured it would be a lot less effective than other options. I had considered it before when thinking about my "immune by design" approach to hacks, but thought it would be a last, pitifully inadequate resort in response to such a design. I never thought people were actually doing it already. How effective is it? Would a system like I described above be sufficient to render it useless? I would think so, but you obviously know more about how they work than I do. I'm not gona pretend to know more than I do. I'm here giving you advice on anti-cheat methods, but you certainly have more knowledge and experience in the field than I do.


Quote:
Original post by Promit
Oh, and dwelty, how would you build in imunity to an aimbot? How do you remain unaffected by a hostile mouse driver?

Well. There are two main methods to aimbots that I'm aware of. Colored models, and grabbing player locations out of memory. As far as I'm aware, no one uses the colored model approach anymore, but you should be able to enforce file consistency easily enough. If you want to allow custom models like Half-Life and it's mods, you could implement some form of sanity checking to ensure that the colors used are within acceptable bounds.

As for finding the location of enemies in memory, you could randomize the location in memory of that info. Seed the randomization function with things the hack can't duplicate, like the number of cycles the processor has gone through since power on...? A hack can't use what it can't find.

I don't have all the answers though. I haven't thought through how to combat each and every type of hack. All I have is a (perhaps naive - you tell me) belief that a well thought out design, rather than anti-cheat tacked on after the fact, is the answer.


Quote:
Original post by Monder
Open Source != Free. For example you could give all the source code away and then charge for the content or for an account on a master server which is used to find game servers etc. You could then ban cheating accounts from the master server and the cheater would have to buy a new account. Sure they could go grab the source and setup their own master server but does it really matter? As long as you keep them off the official master server then you know there's a place where you can get cheater free gaming.

QFT. Good idea. I think this is a necessary step to take as well.


Quote:
Original post by Anonymous Poster
It may not be an advantage to you. But believe me, not everyone has this god-like hearing ability that you do. Similarly, what good are aimbots? If you also have 1ms reflexes and a perfect aim, obviously a computer aided aim won't help you. But that doesn't mean an aimbot wouldn't help 99% of players out there and make the game unfair.

Well, you have a point. Still, I don't think I have any special kind of hearing ability. I think I simply pay more attention to what I do hear that some people. Some people never learn to pay attention, and I've seen others learn after their first death. It's no special skill, just the knowledge that you should pay attention, and the minimal effort to actually do so. In any case, I think your point is valid, but only somewhat so. No human will ever be able to react as fast as an aimbot can. The discrepancy between natural human ability and the hack's ability is much greater when it comes to aimbots than with a sonic wall-hack as I described it.

[Edited by - dwelty on January 9, 2006 5:02:35 PM]

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.