Live data from Hacker News

Reverse engineering Call of Duty anti-cheat

ssno.cc

101–110 of 223 posts

Re: Reverse engineering Call of Duty anti-cheat

#101
post #21

Cheating in multiplayer games has become such a huge problem, it has destroyed trust across every major FPS. I am a long time CS player, but I did briefly play one of the new CoD games, before they went crazy with Nicki Minaj skins and bong-guns. A person was so convinced I was cheating, they started doing OSINT on me while still in a match, and they found my old UnKnOwNcHeAtS account as some kind of proof that I am…

Escape From Tarkov was so busted, because first they've supported cheaters (one cheater, with bought cheat for a few $, made around $2k++ monthly boosting players etc.) when Tarkov dev banned them, they will easily rebuy new account. Easy money for both parties, win-win scenario.

Second, their code for networking was complete BS, they didn't even sanity-check player movement/location server-side and many more things. Ridiculous.

Re: Reverse engineering Call of Duty anti-cheat

#102
Cheating is ultimately a human problem. You can have some safeguards and heuristics like the ones the article describe, to weed out 90% the most blatant cheaters, so I think anticheats like these are fundamentally a good thing. But the anti-cheat can and should err on the safe side because ultimately it should be the players and admins themselves that sort this out.

Online multiplayer games must (yes must) take place on servers with human admins. Admins should be present for a majority of the time any players are playing.

Ideally with admins the players recognize. Bonus points if players themselves can perform some moderation when no admin is present (votekick, voteban etc). There is no difference between kicking cheaters and kicking people who are abusing chat etc. Obviously this means that "private" or "community" servers are the only viable types of server for online multiplayer games.

This process of policing cheaters and other abuse can not be something that is done via a reporting system and handled asynchronously. Kicking/banning must be done by the admins of the game, and it must be handled quickly.

If you are considering buying/playing an online multiplayer game and it doesn't have this functionality (e.g. the only way to play online is via matchmaking on servers set up by the publisher, and the only way cheaters and chat abusers are policed is via some web form) then please, avoid that game. Vote with your wallet.

Re: Reverse engineering Call of Duty anti-cheat

#103

Earlier quoted context omitted.

the call is still in tail position whether or not it reuses the stack frame. there are also more involved ways to do tail call optimization than a direct single-jump compilation when you leave ret behind entirely, such as in forth-style threaded interpreters

I guess were talking about optimising tail recursion. Would there be any reason to refer to a tail call other than that optimisation? I’ll do some reading on the latter part of your post, thank you!

i only meant that "optimized/eliminated tail call" is more useful terminology than an uneliminated tail call not counting as "a tail call". i find this distinction useful when discussing clojure, for instance, where you have to explicitly trampoline recursive tail calls and there is a difference between an eliminated tail call and a call in tail position which is eligible for TCO

i'm not sure how commonly tail calls are eliminated in other forthlikes at the ~runtime level since you can just do it at call time when you really need it by dropping from the return stack, but i find it nice to be able to not just pop the stack doing things naively. basically since exit is itself a threaded word you can simply¹ check if the current instruction precedes a call to exit and drop a return address

in case it's helpful this is the relevant bit from mine (which started off as a toy 64-bit port of jonesforth):

  .macro STEP                                                                             
    lodsq                                                                               
    jmp *(%rax)                                                                         
  .endm  

  INTERPRET:                                                                              
    mov (%rsi), %rcx                                                                    
    mov $EXIT, %rdx                                                                     
    lea 8(%rbp), %rbx                                                                   
    cmp %rcx, %rdx     # tail call?                                                     
    cmovz (%rbp), %rsi # if so, we                                                      
    cmovz %rbx, %rbp   # can reuse                                                      
    RPUSH %rsi         # ret stack                                                      
    add   $8, %rax                                                                      
    mov %rax, %rsi                                                                      
    STEP
¹ provided you're willing to point the footguns over at the return stack manipulation side of things instead

Re: Reverse engineering Call of Duty anti-cheat

#104

A 2-year legal battle with Activision to overturn a false permanent ban. Activision showed up with zero evidence of cheating and lost: https://antiblizzard.win/2025/01/18/my-two-year-fight-agains...

Interesting stuff! Though I don’t get why b00lin would have to prove that they weren’t cheating. This is not a criminal case, but still. Activision was denying access to a service that was paid for.

Re: Reverse engineering Call of Duty anti-cheat

#105

A 2-year legal battle with Activision to overturn a false permanent ban. Activision showed up with zero evidence of cheating and lost: https://antiblizzard.win/2025/01/18/my-two-year-fight-agains...

Honestly I'd prefer it if games could permaban based on just heuristics and the EULA simply stated "tough luck, buy the game again". I'd happily pay for that, knowing my money is at least not going to some 2 year legal fight. I get that I might be the one accused of cheating next time. But if that risk is tiny and the cost when it happens is $50 or $100 it sounds a lot more attractive than the alternative. Also (obvi…

I think stat based bans are the ultimate solution for all the client side bullshit.

If you use statistics, you will sometimes get it wrong, but in the other cases the cheaters are completely out of luck. You could offer the source code to your game willingly and it wouldn't help them very much.

If the cost of a false positive is $50 for the gamer and the chance of it happening is rare, I think many would quickly understand the value proposition from a game experience perspective.

Assuming your false negative rate is low (I.e., you have high classification margins), you can make it extremely undesirable for players to engage in unfair play. Even soft cheating like aiding teammates with streaming and discord side channels could get picked up by these techniques.

Re: Reverse engineering Call of Duty anti-cheat

#106
post #62

Earlier quoted context omitted.

Holy ….. what a fight you had to do. So glad i hardly play any mulitiplayer shooter games. I’d hate to have my insane Steam library stripped away from me.

His steam library was not restricted, just the game in which he was accused/banned.

Apologies. I stand corrected. Thank you for this insight.

Re: Reverse engineering Call of Duty anti-cheat

#107

As long as you can read and write to memory, you will never stop online cheating in FPS games.

Even then, you could probably set up an aim bot with a second computer using computer vision to detect characters, and sending inputs as a USB mouse.

Re: Reverse engineering Call of Duty anti-cheat

#108

Earlier quoted context omitted.

Honestly I'd prefer it if games could permaban based on just heuristics and the EULA simply stated "tough luck, buy the game again". I'd happily pay for that, knowing my money is at least not going to some 2 year legal fight. I get that I might be the one accused of cheating next time. But if that risk is tiny and the cost when it happens is $50 or $100 it sounds a lot more attractive than the alternative. Also (obvi…

I think stat based bans are the ultimate solution for all the client side bullshit. If you use statistics, you will sometimes get it wrong, but in the other cases the cheaters are completely out of luck. You could offer the source code to your game willingly and it wouldn't help them very much. If the cost of a false positive is $50 for the gamer and the chance of it happening is rare, I think many would quickly unde…

Nah, that won't do it. Even if you had a rare false positive rate, it would be significantly higher for players with a profile similar to ones that trigger bans.

It would be even worse than the bans some developers hand out now because their inherit randomness would be essentially just that. Not acceptable for any form of service.

Re: Reverse engineering Call of Duty anti-cheat

#109
Wouldn't it be possible or relevant to periodically, electronically sign the game state, to prevent cheating? Or with some proof of work?

I am starting to think that cheat are just too hard to fight against, I am making a small, cheap online FPS, and I would let users trust each other instead, and hunt cheaters themselves, or maybe use AI like valve is doing. I would not bother have a anti cheat software.

Also players would have to manage and administrate their servers themselves.

Players would require to have a cellphone number attached, have a reputation score given by other players, maybe give an id or some other strong auth method, manual verification with like a photograph, like it's done for some dating apps. Players would have to play like 10 hours before they could play competitive.

I am confident hardcore players would be motivated to do all those things to make sure there are fewer cheaters.

Re: Reverse engineering Call of Duty anti-cheat

#110

Cheating is ultimately a human problem. You can have some safeguards and heuristics like the ones the article describe, to weed out 90% the most blatant cheaters, so I think anticheats like these are fundamentally a good thing. But the anti-cheat can and should err on the safe side because ultimately it should be the players and admins themselves that sort this out. Online multiplayer games must (yes must ) take plac…

I agree for the most part, there are other ways, like a phone number, manual verification with a photo, require players to play 10hr before they can play competitive, have a recommendation from other players, etc, or even a pay-once 5 dollars game pass on top of all those things.

Although I recommend you to watch the valve presentation of AI anti cheat if you did not already. Their work is quite interesting, and they claim they catch 99% of cheaters.

Although obviously there are also very subtle ways to cheat, too.

Post reply on HN