Any cheat somehow interacts with the game's client. To do this, the author of the cheat needs to have an idea about the internal structure of the client. The most professional chitodels get such an idea, including by reverse engineering - they find the necessary variables and restore the class interfaces. Then the class methods can be called in their own interests. The internal structure of classes in the client changes extremely slowly throughout the life of the game. After some time, this information falls into a much larger circle of less qualified chitodel and then the variety of cheats of identical functionality increases by an order of magnitude.
ESP (Extrasensory perception)- A variety of cheats that can show additional information about opponents in the game. Unfortunately, the client of the game knows about the location of all opponents within a certain radius from you, even if they are behind the wall and cannot be seen. In a shooter, actions develop fairly quickly and if the client receives information about the enemy from the server only when he is in sight, this will certainly lead to lags due to network delays. A cheat receives information about opponents through the internal interfaces of the client's classes and displays it directly on top of the game image. This, at least, is the location of the enemy in space and the distance to it. To draw on top of the game image, a cheat intercepts one of the Direct3D methods that are invoked every frame. For example, EndScene. All this implies that a cheat code was embedded in the client’s memory,
Aimbot is a type of cheats for automatic aiming. You just have to run and pull the trigger, and the scope itself falls on the nearest enemy. You can even choose the part of the body you want to aim at. The location of the enemy in the space of the cheat also gets through the internal classes of the client. Further options are possible for automatic pickup. Or cheat directly calls the right methods in the client to rotate your character (the sight is always in the center of your gaze). Or sends a message to the client on behalf of the mouse for the same purpose.
Autoshot- automatic shot at the moment when the enemy is in sight. Such a cheat works similarly to aimbot - information about the location of the enemy gets through the internal classes of the client and sends a message from the mouse for a shot. Often, autoshot and aimbot are combined together. Then you just have to run, and aiming and shooting are performed by cheat automatically.
Recoil- disables recoil when fired. Such cheats, as a rule, simply patch the client's code of the game in memory, which is responsible for the return. As a result, shooting becomes much easier. In addition to disabling recoil, there is also a mass of cheats that disable various elements and simplify the game. For example, disabling scatter when firing or disabling the effect of the work of a noise-noise grenade. Some of these cheats do not modify the code, but variables in the client’s memory to achieve their goal.
Of course, this is not a complete list of existing cheats, but it is already possible to make a list of the mechanisms of their work:
Modification of the game client code in memory.
Modification of game client variables in memory.
Call the methods of the inner classes of the client directly.
Sending messages on behalf of the mouse.
Methods of struggle
How to deal with this? Of course, the presence of a competent client-server architecture for the game is very important. But, unfortunately, this does not solve all problems. Some gameplay elements are executed only on the client side, and the server cannot detect the fact of their disconnection. And the server is forced to inform the client about all opponents in a certain radius from you for an acceptable game performance.
The first most effective way is validation on the server of player actions. For example, if a player somehow moved farther out in space than the game mechanic allows, then surely this is a cheat (speedhack), and he should be kicked immediately. Such validation of player movements is possible, because ultimately the server controls the location of players on the map.
The second method is a statistical analysis on the server. For example, if all the bullets of a player constantly get into the head of enemies, then this is very suspicious. Or not in the head, but simply without a miss. Or, say, the player’s results for the match are very much out of the average. Of course, all this is not a reason to block the account of this player. Maybe he really is very cool. However, this can be used as a trigger to closely check the player’s actions by the game’s technical support team. It should be understood that the smart cheater, most likely, will not “burn” and will not fall under the check.
Another way to fight is the built-in ability to complain about the cheater. Of course, the complaints must first be checked and then decide whether to block the account or not. But as practice shows, this method has a rather limited application. A complaint about cheating immediately becomes an element of manipulation in the game - people complain about everyone who plays better than them. The result is a huge stream of complaints, especially for experienced players.
At this, "beautiful" ways to protect against cheats end, but the problem is not completely solved. We have to contact the hinged protection of the client of the game.