|This article does not cite any references or sources. (April 2012)|
An aimbot is a type of computer game bot used in first-person shooter games to provide varying levels of target acquisition assistance to the player. It is sometimes incorporated as a feature of a game (where it is usually called "auto-aim" or "aiming assist"). However, making the aim-bot more powerful in multiplayer games is considered cheating, as it gives the user an advantage over unaided players.
Aimbots have varying levels of effectiveness. Some aimbots can do all of the aiming and shooting, requiring the user to move into a position where the opponents are visible; this level of automation usually makes it difficult to hide an aimbot—for example, the player might make inhumanly fast turns that always end with his or her crosshairs targeting an opponent's head. Numerous anti-cheat mechanisms have been employed by companies such as Valve to prevent their use and avoid the accusations.
Some games have "auto-aim" or "aim assist" as an option in the game. This is usually a weaker aimbot, as its purpose is to make a game more accessible for less skilled players rather than to cheat in an online game. Auto aim also sometimes helps the user to aim by slowing the movement of 'looking/aiming' while the crosshair is on or near a target or slightly helping the player by moving the aiming to the player for a better shot. This is not to be confused with "bullet magnetism", which curves bullets in mid-air towards a target as opposed to moving the crosshair towards one.
Color aimbots work by scanning the player's screen for a selected color value. Once a pixel of the target color is detected, the aimbot will move the player's mouse cursor to that pixel. As such, color aimbots need more system resources than a standard aimbot.
Color aimbots can be difficult to detect since they do not modify the game program. However, they typically lack accuracy, since the target colour may be used in numerous places throughout the game, and it may be impossible to differentiate between an opponent, a dead body, and a teammate. Dynamic lighting can also interfere with the detection of colours.
Graphics driver-based aimbots
Another type are graphic driver-based aimbots. These types of hacks hijack the current API, such as DirectX or OpenGL, which render a game's graphics to the screen, and use the data gathered to locate players and other objects, for example by counting the number of polygons of player models. Once a player has been identified and tagged as the target, a series of calculations are performed to take the three dimensional location of a single coordinate within this model and convert it to a two dimensional set of coordinates. This pair of x- and y-values is then used in conjunction with some input API to move the cursor to the specified location, thus causing the player to aim at the target. Graphics driver aimbots are common in closed-source games, because it is not necessary to have the game sourcecode to write them.
Client hook-based aimbots
Client hook aimbots work by patching either the game executable on the hard disk, or by directly patching the instruction cache. Patching allows for redirection of the program execution flow, which allows to modify program behaviour, such as removing recoil, making players behind walls visible or predicting and drawing weapon projectile trajectories. Patching is accomplished by injecting a shared library ('so' on Linux, 'dll' on Windows, 'dylib' on Mac) in a running process. On Windows, one usually has to do this by DLL injection, ordinarily with CreateRemoteProcess or SETDLL, while on Linux/UNIX (including Wine), it is possible to use LD_PRELOAD (on Mac DYLD_INSERT_LIBRARY) to load a shared library into a process.