So yeah, I want to discuss or point out why I think Valve needs to fix Anti-Cheat issues.
They have VAC but apparently its doing jackshit, be it Counter Strike 2 (any previous iterations) or something like Hunt: Showdown the prevalence of cheating players is non deniable.
For me personally it has come to a point that I am not enjoying playing those games anymore, although they are great games by itself. But the amount of occurrences being killed or playing against cheaters is at a height, where I don't see the point anymore.
- Why I think Valve is the only company able to something against cheaters?
Because they have the tools with VAC already aiming to prevent cheaters. Valve has got the resources to actually invest into something more profound which could be used for any game where anti-cheat protection needs to be implemented. And lastly Valve is the company which is interested in furthering the ability to gaming on Linux, the anti-cheat solution needs to work on both operating systems. Only Valve has the motivation and means to achieve that with their knowledge and resources.
What do you guys think about the topic? Is the fight against cheaters hopeless? Do you think some other entity should provide anti-cheat protection, why? I skimmed over "anti cheat in linux kernel" posts in the net, but I have very little knowledge about the topic, what is your stance on it?
Edited:
Mixed EAC with VAC. EAC seems to be part of Epic Company. Both of these tools seem unable to prevent cheating like mentioned above.
How do you propose to hinder aimbots and the like from working with server-side changes?
how do you stop it on client side? I'm not sure if it has been deployed into the wild but these days computer vision is good enough to just work off the images. Capture image signal, fake usb mouse outputting movements calculated from image data. If this isn't already available it's only held back by the need for extra hardware.
I described a plan here: https://pawb.social/comment/4536772
Not perfect, but neither are rootkits.
Why do you call anti-cheat software rootkits? Rootkits are malicious.
It's software I don't want running on my system and the kernel mode stuff has full hardware access.
Yes. It's a matter of knowing what you trust on your pc and understanding your threat model. Programs running in user mode can also be malicious.
Inexhaustive of things that kernel mode code can do that unprivileged (without "root") user mode cannot:
And so on. The question you should be asking isn't "are they going to do this?" but instead "why are they even asking for this permission in the first place?".
A game where you run around pretending to be a space marine doesn't need low level access to your hardware.
I'd argue that any software that is adversarial towards the user/computer owner, and takes actions specifically to hinder an action by them, on their own machine, is malicious.
We'd be absolutely apoplectic if the government demanded we install a surveillance tool on our laptops in order to e.g. access the DMV website or file our taxes, but when someone tells us to in order to play a game, it's okay? Nah.
I mean AI sounds like a legit idea. In the past e.g. battle.net from Blizzard was also just looking for "patterns". And AI could be much better at that. The question is, how do you get the required information without having any clientside info? To distinguish between a good player and a bot would be very very time consuming to train an AI on that level.
All you really need is where the character is looking, their location and the terrain map, all of which are things the server has authority over or can check easily.
Distinguishing between a good player and a bot probably won't be that hard. A simple aimbot would probably fire exactly at a target's (0, 0) coordinate, while a good player may be a frame or two early or late. Someone with wallhacks will behave differently if they know someone is around a corner. There's almost certainly going to be small "tricks" like that that an AI can pick up on.
We went through this in RuneScape with auto miners. You just randomise locations and times slightly and it's almost impossible to tell the difference.
It's so easy to get around.
Depends on whether people working on cheats can see the anti-cheat detection code. It's hard to ensure that one data set is statistically-identical to another data set.
I remember at one point, reading about use of Benford's law, that the IRS looked at leading digits on tax forms. On legit tax data, "1" is a more-common leading digit.
Recently, Russia had a vote in which there was vote fraud, where some statisticians highlighted it in a really clear way -- you had visible lines in the data in voting districts at 5% increments, because voting districts had been required to have a certain level of votes for a given party, and had stuffed ballot boxes to that level.
If I can see the cheat-detection code, then, yeah, it's not going to be hard to come up with some mechanism that defeats it. But if I can't -- and especially if that cheat-detection code delays or randomly doesn't fire -- it may be very hard for me to come up with data that passes its tests.
bots are way more elaborate than that, even 20 years ago there were randomization patterns.
Unless the aimbot is using its own AI learning system, it'll not behave as a human would. For example, it might fire at a random point in a circle, where a human might have better aim along the horizontal axis or something.
Bots can be updated to, its the same game with hacks and exploits, it just depends on the resources available at each side.
How would a server-only method detect esp or wallhacks, which are generally speaking client-only exploits?
People with wallhacks will deliberately move their crosshairs over people that they see through walls. Or, if they know the server is watching for that, they'll make a subconscious effort to never have their crosshairs over someone through walls.
What makes you think that anything client-side will be allowed to work as it should?
I don't. Anything on the client can be tampered with. It's the server's job to make sure anything they receive is both valid and consistent with how a human would act.