Jail time for cheat programmers in China

Here’s an interesting article about cheating in Playerunknown’s Battleground:
https://www.bloomberg.com/news/articles/2018-01-16/tencent-cracks-down-on-cheats-in-world-s-top-selling-video-game
I was surprised to hear that the Chinese police jail cheating programmers who make aim bots and so on.

[quote]Ahead of its official debut this year, the biggest gaming company on the planet has enlisted Chinese police to root out the underground rings that make and sell cheat software. It’s helped law enforcement agents uncover at least 30 cases and arrest 120 people suspected of designing programs that confer unfair advantages from X-Ray vision (see-through walls) to auto-targeting (uncannily accurate snipers). Those convicted in the past have done jail time.
[/quote]
How strange. I think they’ve forgotten that it’s just a game!

This is really interesting. I wonder what they were actually charged with?

Now if we could only crack down on fake review bots, people who steal other people’s art, and advertisement spammers…

Haha, yes I agree. I’m surprised that they even try to crack down on cheating in games, one of the least important and troublesome problems compared with outright piracy, spamming, and worse things. Surely cheating in games is best fixed by the game maker, not the police. You’d think the police would have more important issues to deal with.

I made an aim bot in java once using the Robot class that took a screenshot and scanned for a red bandana pixel of the counterstrike terrorist player, and clicked on his head repeatedly if it was somewhere in the middle of the screen. Only useful for that one character, and it slowed the game down. But it was fun. Strange to think that it could be illegal.
I was impressed at @Slyth2727’s more advanced hacking too, he did some amazing things in battlefield if I remember.

China has a more rigorously enforced social contract than the West. They take a dim view of things which we let go as morally indefensible but technically legal.

Cas :slight_smile:

Did this really work? :smiley: I was once thinking about doing this too (for fun and experimental stuff ofc) but I was like the robot class is probably way to simple to achieve that.

@ral0r, yes the Robot class can do screenshots and mouse clicks without having the focus, it’s quite neat. Unfortunately I’ve lost the code, but by detecting that ‘print screen’ was pressed so the system clipboard was detected to contain an image, not text, the program showed a Swing JFrame with the in-game screen shot which allowed you to select a list of pixel colours that would be searched by the aim bot program. Then you click run and the Robot class would trigger the mouse-clicks in game when it detected the pixel colours on screen. Worked reasonably well unless the helmet or bandanna colour was also contained elsewhere in the environment.
https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html

I think Slyth2727 used C++ and some programming memory-viewing tools to actually find the memory in the Battlefield program that contained the enemy player coordinates and paint them onscreen over the top of the running game! Next level.

@princec interesting about that social aspect. Maybe it’s also related to the ‘great firewall of china’ government digital control. Still, in a country as big as China with all of the developing country problems they must face, I would never guess that the police would waste resources arresting game cheats. Is there a pettier crime?

I actually used C# for developing the hack before I went internal. Then I used C++. Used IDA Pro for reversing for the most part, the majority of it was static analysis and I’ve found that to be pretty standard with these big games. I personally wouldn’t suggest Java but hey if you can get it to read and write to memory you could do something. I’ve never used Java for anything like that though.

You basically have to reconstruct the pointer paths and class structures. Once you can figure out how things are spaced in memory you can determine where in memory to read/write info. Using the game’s projection matrix and some transforms you can go from the world to screen coordinates. So for a basic wall hack you would need to figure out where in memory the player list is, probably reconstruct the player class until you find the position variable, and also find the projection matrix. Then it’s just some math and rendering and voila. You can choose to overlay the screen or hook into the game’s DirectX/OpenGL context.

@CommanderKeith I think that sounds pretty intresting. What I always thought might also be neat about the Java robot class is that it is harder to detect by anticheat tools because it is running in a JVM. This is just an assumption though could you elaborate a little bit on that?

Maybe it doesn’t make a difference though if you are writing from a Java or a C++ programm to the memory because the anticheat tool detects the memory manipulation. In that case Java would probably not have any advantage compared to any other programs but since you are not manipulating the memory with the robot class do you think it would be harder to detect compared to cheat programs not running in a virtual machine?

Note: I’m an completly newb in that area my assumptions might be completly wrong :smiley:

Tried to read memory with java from a game using BattlEye. Couldn’t get the memory to even read with that anticheat. Gave up after that.

Java wouldn’t have an advantage with the Robot class because the anti cheats generally only look in the local program. If it detects unnatural/impossible mouse movement it may trigger. This can happen regardless of the method of input manipulation you use if you’re not careful. I don’t see any situations where the JVM would provide an advantage and a few where it would be a disadvantage. For one, the manipulation of memory has to occur rather quickly sometimes and works best with native running code in my experience.
That’s why I ended up using C++ (not to be mistaken for C++/CLI which does run on the .NET VM), switching from C#. C++ also allows me to compile to a native DLL and inject that which is a much cleaner and more useful method. So personally I wouldn’t suggest Java for anything beyond basic external memory reading. But take that with a grain of salt. I’m sure somewhere, somehow some nutjob has somehow managed to compile JVM bytecode into a native DLL and inject it… (edit: ffs seriously internet http://www.ikvm.net/)

The coolest thing I ever saw was some dude that compiled a C++ DLL that contained his hack, injected that into the game, then managed to call functions in the DLL from an external C# GUI he used to modify the settings. Blew my mind and I never really fully understood how he got that working. This way he was able to have a fully external quickly responding overlay that wouldn’t be screenshot by any anti cheats with all the benefits of an internal hack. From my understanding he messed with window’s IPC in order to achieve that. Honestly not really sure how useful it was but it was pretty neat.

I hate china. This a all of bitch.

Interesting, that’s heavy duty. I checked their website and BattleEye say that 1.5 million PUBG cheaters have been banned.
https://twitter.com/TheBattlEye

@Slyth2727 thanks for sharing your thoughts on this! Very interesting.