Today I was goofing around with CheatEngine some more, simply because I find it interesting how easy it is to hijack code. So Hippo and I were mucking around in a certain game (both with CE open), and of course, the first thing I started looking for was the address of the health.
It only took a couple minutes to find it, and freezing the value in memory only kind of worked – since Hippo was hosting the game and the health, technically, is kind of done on the server-side my frozen value didn’t really do all that much. Dur dur.
But I needed my godmode, because Hippo was using a speedhack and flying around the map. So I click another button, and find the code which writes to that value in memory. Bingo – two instances. So I hop over to the first one and open up the assembly. Now, I know hardly anything about ASM, but I see a jmp (well, it wasn’t a jmp, it was the short-jump thingy, can’t remember the opcode for it) and decide to cut the branch. This is basically as simple as setting the Zf flag in the register. So I ticked the box.
I go back in-game, and to my delight, Hippo’s attacks no longer deal damage. Why? Because I killed some part of the collision check process. Whoo whoo.
At this point, the server started to lose stability (we were mucking around a lot), but Hippo (being the host) also managed to warp himself around the map (by changing his local position, since he was the host it worked; I doubt it would have worked for me, a client), give himself unlimited ammo/energy, and a couple of other things.
Now, I’m not an experienced hacker, and Hippo had never used CheatEngine before, and yet we were able to completely tear apart this game in about an hour. Sure, a lot of the data was maintained by the server, but a huuuge problem with game developers these days is that they really don’t know how to prevent cheats, simply because they don’t know how its done.
I would therefore encourage everyone to go and pick up a copy of CheatEngine, just to see the tools of the trade. I don’t encourage using said tools in a manner other than educational purposes, however, many people who play your games will not share the same restraint Hippo and I have.
As Sun Tzu once wrote, “To know your Enemy, you must become your Enemy.”
3 comments