Live data from Hacker News

Reverse engineering Call of Duty anti-cheat

ssno.cc

41–50 of 223 posts

Re: Reverse engineering Call of Duty anti-cheat

#42
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…

fwiw, cheating in CS(GO) taught me x86 RE and low-level programming way younger than is usual. sophomore year of high school.

I still recommend writing an HvH cheat to anyone that wants to get into proggin' -- you get a taste of both static and dynamic RE, memory-level programming, UI development, bare dxsdk (usually), a skid-saturated environment, sysadmin (if you try to set yourself up an uber1337 cheat page), and a bunch of other little things, all in an environment where you're quite directly competing with others in the same situation.

Re: Reverse engineering Call of Duty anti-cheat

#44
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…

[deleted]

Re: Reverse engineering Call of Duty anti-cheat

#46
post #30
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…

I disagree that cheating "has become" a huge problem, it was always a huge problem. I can't remember a single multiplayer game that didn't have cheaters of some form or another. None. Zilch. Zero. It's kind of why I never grew beyond playing MMORPGs, and even that passion ultimately died out.

Back in the old days, before even xbox, online play was almost exclusively on computers on privately hosted servers, so you had mods actively banning anyone who gave any hint of cheating.

Re: Reverse engineering Call of Duty anti-cheat

#47

As long as you can read and write to memory, you'll never stop cheating in multiplayer games.

Sure, and that's why there's more and more "trusted" hardware to try and get computers to a place where their users cannot read and write to or from their own memory.

Re: Reverse engineering Call of Duty anti-cheat

#48
post #46
post #30

Earlier quoted context omitted.

I disagree that cheating "has become" a huge problem, it was always a huge problem. I can't remember a single multiplayer game that didn't have cheaters of some form or another. None. Zilch. Zero. It's kind of why I never grew beyond playing MMORPGs, and even that passion ultimately died out.

Back in the old days, before even xbox, online play was almost exclusively on computers on privately hosted servers, so you had mods actively banning anyone who gave any hint of cheating.

That doesn't refute my point, though; probably supports it, even. Private server owners went scorched earth in ye olde days because cheating was (and still is) a huge problem.

Re: Reverse engineering Call of Duty anti-cheat

#49
post #17
post #6

Earlier quoted context omitted.

Unconditional jumps are very common and everything in x86 assembly is very very messy after optimizations. Many functions do not end in ret.

How do functions that not end in ret work?

A function with an unlikely slowpath can easily end up arranged as

    top part
    jxx slow
    fast middle part
  end:
    bottom part
    ret
  slow:
    slow middle part
    jmp end
There may be more than one slow part, the slow parts might actually be exiled from inside a loop and not a simple linear code path and can themselves contain loops, etc. Play with __builtin_expect and objdump --visualize-jumps a bit and you’ll encounter many variations.

Re: Reverse engineering Call of Duty anti-cheat

#50
post #17

Earlier quoted context omitted.

How do functions that not end in ret work?

There are things like compiling a tail call as JMP func_addr.

Yes, I think the most common is a tail call. There also of course can be several ret's from a single function.
Post reply on HN