Hacker News new | ask | show | jobs
by ds 2247 days ago
The inherent issue with anti cheats as compared to anti-virus software is user intention.

A user who installs a anti virus program wants that program to do its job and find bad actors. The virus on the other hand is completely unwanted by both the user and the software- Its existence is threatened by all fronts.

However, a anti-cheat lives in a extremely adversarial environment. The cheater (and the cheat) wants the cheat on its computer. As such, the user will be willing to do extra steps to assist the cheat. This makes the anti-cheat software in this case, the 'un-wanted' virus, so it has to exist in the most hostile of environments and somehow detect programs which have higher privileges than itself.

That said, Cheating is something that will not go away. Years and years ago, I developed with a friend of mine a completely undetectable cheat for all games on the HL2 platform. It involved a second computer, which man-in-the-middled all network data to the client computer. This second computer then would display a 'radar' of where enemies were. As the anti cheat would have no possible way of knowing the existence of this second computer, there was not much they could do.

If you wanted to get more aggressive with the system above, you could have that second computer modify outbound requests as well. So if you shoot your gun and it would have hit the ground, it will now instead shoot a enemy in the head- as such even something like a aimbot is entirely possible with this setup.

However, there is indeed a anti cheat which can detect all known cheats and its basically what Valve did/does for CS:GO - Allow users to report suspected cheaters and then have the community analyze the reports. This catches all blatant cheats, but unfortunately will never get rid of radar/esp cheaters, only aimbots and the like.

Honestly, it sounds to me like there is a business model in the above. Years ago we had companies like evenbalance/punkbuster, easy anticheat, etc.. which provided software based anti-cheat systems. As you would expect, most would by bypassed and a daily cat and mouse game would ensue. The solution imo is to create a SaaS where you essentially provide a reporting + monitoring tool. Users of your game can report suspected cheaters (which includes the demo file / vod / replay / whatever) and your trained wet-ware staff would review all reports and take action where necessary. No invasive software necessary. Actually, no software on the end users computer at all would be necessary- It is all done on another users PC.

In fact, if someone is interested in doing the above, hit me up. Sounds like a easy win.

3 comments

> Years and years ago, I developed with a friend of mine a completely undetectable cheat for all games on the HL2 platform.

> It involved a second computer, which man-in-the-middled all network data to the client computer.

Out of interest, was there no transport level encryption to deal with here? Or did you need to do something special to capture keys on the client?

I believe newer Valve multiplayer games (e.g. Dota, CSGO) use Steam Networking instead of the game sending UDP itself. Packets sent with Steam Networking are encrypted[0].

Before CSGO moved to Steam Networking, the game itself encrypted the packets. I can't remember exactly when this was introduced, but it's still in place - see https://github.com/alliedmodders/hl2sdk/blob/acf932ae06b64b7...

[0] https://partner.steamgames.com/doc/features/multiplayer/netw...

In order for your game to render other players you have to know their position, so the game server has to send them to all players.

As an example, for CSGO in the past, the server always sent all player positions from anywhere, so it was possible to create cheats to draw players anywhere in the map. They changed the way it's done, coordinates are only sent when other players are nearly visible, although distant, or close by. This limited the way that wallhacks work, it's not possible to see where players are from far away :)

What needs to be done is reverse engineer the communication protocol. If encryption is made, some kind of key to decrypt has to be somewhere in your game client. Then you can convert 3D coordinates to 2D and even draw a radar on your smartphone if you make an app.

>In order for your game to render other players you have to know their position, so the game server has to send them to all players

I know nothing about game engines, but I have always wondered why is that the case. The server could compute visibility and only send the opponent position if there is a chance the player might see it. Computing visibility server side is not cheap, but it would still be significantly cheaper than fully rendering a scene, right?

Riot's Fog of War for Valorant does exactly what you describe.

https://technology.riotgames.com/news/demolishing-wallhacks-...

That heavy lifting wasnt done by myself so I unfortunately dont have a answer for you. This was around a decade ago however, so I would not be surprised if the traffic was unencrypted.
Source did not encrypt network traffic until DeepBlueSea released NetShark for CS:GO.

Now it uses ICE, a 64-bit block cipher from the DES era. The key is obtained from the Steam servers over the normal Steam encrypted channel.

The future of anti-cheat is machine learning specific to the game. CS:GO already does this, where it used the Overwatch community review program to train it, and it can now automatically ban some cheaters.

I don't think it's a viable model because players are willing to do it for free, as CS:GO's Overwatch shows.

Valve also put a significant amount of work into this system. Asking every game developer to build that system for their game seems like alot to ask- Especially when they can just drop in a few lines of code // third party software package and have cheating 'handled'.

'Not invented here' is a blessing and a curse.

Public relations for a startup like this would be hard to manage. I can already see the front page Reddit post with 4,000 upvotes on the game's subreddit asking why they lost $400 worth of items because one of the outsourced employees being paid $3/hour illegitimately banned them. Easy target to blame a company like this.

Cheater effort and quantity scales roughly with game revenue and popularity. So the first tier of games, the most popular and long-term ones, like League of Legends, CS:GO, Overwatch, maybe Valorant, Apex Legends, Fortnite, can afford machine learning. The next tier down can afford to implement community review programs, where players earn in-game rewards and the satisfaction of improving game experience.

To be fair, this happens regardless, every day. Nobody believes anyone suspected of cheating, ever. And I mean ever. Just go look at the steam forums and the thousands of "i was falsely banned posts". If what you are saying was true, we would have seen this already happen for steam on reddit every day, which it doesnt.

Also, thats not to say you cant have a second and third tier of support to escalate your case to if you think you were wrongly banned, which wouldnt go to the grunts.

This is because most of the cheating bans currently are not human reviewed, it's technical evidence. Closest to this issue I can remember is that some pro CS:GO player was banned by the Overwatch program a few years ago and a fuss was made until it got fixed.

Trying to review a replay to determine if a player is using wallhacks? This would take intimate knowledge of every game the SaaS reviews.

Maybe this can work out and I'll be like the one 2007 HN comment about Dropbox, but it takes an average of maybe 5-10 minutes per case to review if you're not being super thorough. It could be an open platform where players can sign up, but at that point I think game developers would just implement it in-house. The harder part of this technically is the replay functionality in the first place, which they'd have to do anyway.

How do you know if someone is lying on a virtual forum? All of the cheaters that got rightfully banned have just as much reason to write the same forum posts as those who were wrongly banned. That combined with the fact that the large majority of people (probably >99%) who don't cheat never get wrongfully VAC banned makes it hard to believe that the system made a mistake.
To my knowledge radar cheaters are now dealt with by not sending information about enemy positions if they are behind walls. It's not a perfect solution ofc but it seems like it works reasonably well.
The current one in Valorant is simple wallhack

https://www.youtube.com/watch?v=ATkpqYmWt8k&feature=youtu.be

Depends, there are many methods of doing it. Many games let you hear gunshots/grenades/etc.. that are far away. You can use those sounds to show a radar spot.