Anti-cheat guide

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

Note: this page doesn't contain any information about the MTA AC, but just about customizing additional anti-cheat features. If you are interested, read general information at https://forum.mtasa.com/topic/66858-bounty-for-finding-security-flaws-and-working-cheats-in-mta/ (including the spoiler) and also refer there for other things like reporting a vulnerability/working cheat.


This guide explains how you can fine-tune MTA's anti-cheat on your server using mtaserver.conf. It does not allow players to modify their own AC settings.

An anti-cheat helper resource, acpanel, is included as a default resource. This shows the current anti-cheat status of your server, along with an option to keep your clients up to date and a basic implementation of onPlayerModInfo to block modified img files.

You may want to fine-tune AC to prevent certain players have from having an unfair advantage or to ensure competitive integrity. The settings you provide depends entirely on the kind of server you run. Here are some examples on what can be achieved:


  • Problem: Alice tries to ram the vehicle of Eve, and Alice can clearly see the collision, but Eve's vehicle is not really moving.
Explanation: Eve has changed their vehicle model to a much smaller vehicle, or a model with a tiny hitbox or (nearly absent) collisions.
Solution: Disallow non-standard gta3.img


  • Problem: Eve seems to be using wallhacks! She even seems to even be shooting through them!
Explanation: Eve has replaced buildings so that they are either invisible (textures) or tiny (models).
Solution: Disallow non-standard gta3.img


  • Problem: Mallory seems to be solving complex maths questions instantly! It should take at least a couple of seconds... for humans.
Explanation: Mallory is injecting keyboard input via something like AutoHotkey
Solution: Enable SD #31 to prevent users from injecting keyboard input. You can use SD #32 for injected mouse input (e.g. for scripts that require natural skill from mouse input)


  • Problem: Mallory seems to be spamming my commands and GUI... and it lags my entire server!
Explanation: You are running expensive user-initiated code without rate limiting players.
Solution: You should write code that prevents players from spamming certain actions.
Lazy Solution: Enable SD #31/#32 to make it more difficult for players to spam certain actions.



<disableac></disableac>

Comma separated list of disabled anti-cheats. This setting disables specific AC codes. If a detection is triggered and it's not disabled by the server, a player will get kicked and be shown the AC code corresponding to that detection. Note that the list is incomplete (it doesn't cover all AC codes that exist) because not all AC codes can be disabled for security reasons, e.g they are critical part of the anti-cheat and likewise we will also never provide information about what exactly they mean.

DISCLAIMER: Please note that disableac will only void the AC # kick for using GTA singleplayer cheats and some very basic, outdated and patched MP cheats (such as s0beit). Hacks & cheats designed for MTA or other general hacking tools may still trigger a Global ban or kick. If you try to use a typical MTA cheat or hacktool under the belief using disableAC will save your day, and get banned for a while, it's your own fault, regardless of this setting being used to disable any of the AC classifications that it may fall under.

There is also a good chance that disabling certain detections won't enable your players to (even) use the majority of 'basic' GTA:SA trainers, but result in a kick only. Due to the current state of MTA anti-cheat, and its advanced heuristics, it's simply not feasible to try and create a freehaven for cheaters. You can experiment, but we don't recommend using disableac for these reasons.


Note: With trainer, cheats (for MTA or GTA) or forbidden cheat tools are meant. This is especially true for AC #4. Please note that getting kicked for anything listed here isn't neccesarily (intended) hacking, someone can open hacktools that they plan to use for another game, while both that game and MTA are opened, and be kicked. It's also possible that someone isn't aware of certain software containing hack/tamper features (making it prohibited) when they run it and get kicked. Basically, (the intent of) cheating on MTA or your server can never be proven by triggering these detections alone.

Available codes are:

Code for <disableac> Displayed on detect Required server version Required <minclientversion> Notes
1 AC #1 any Classic health/armour hack detector
2 AC #2 any Corrupted dll files
4 AC #4 any General security violation. This is the most common AC code for attempted cheating, prohibited tools, GTA trainers, or inadvertently running a cheat for another game while MTA is opened.

Note: disabling this code is unlikely to produce expected results, in accordance with what is mentioned in the "DISCLAIMER" part.

5 AC #5 any Detects use of trainer.
6 VF #6 any Detects use of trainer incl.: player movement, health/damage, weapons, money, gamespeed, game cheats, aimbot
7 VF #7 any Detects use of trainer.
8 VF #8 any Detects unauthorized mods
11 AC #11 any More trainers
VF #11 any Dll injector / Trainer
13 SD #13 any Data files issue
17 VF #17 any Speed / wall hacks
18 AC #18 any Modified game files
21 AC #21 any 1.3.1-9.05097 More trainers
VF #21 any 1.3.1-9.05097 Custom gta_sa.exe
26 SD #26 any 1.3.4-9.05858 Anti-cheat component blocked


<enablesd></enablesd>

Comma separated list of enabled Special Detections (SD #). A special detection is a type of anti-cheat for (usually) harmless game modifications. Competitive servers or servers dealing with a certain problem structurally may wish to enable special detections, but most servers should leave this setting blank. Available codes are:

Code for <enablesd> Displayed on detect Required server version Required <minclientversion> Notes
12 SD #12 any Disallow custom D3D9.DLL (Note that this will break certain GTA mods like ENB, players might not like that)
14 SD #14 1.3.1-9.04605 1.3.1-9.04605 Disallow virtual machines such as VMWare
15 SD #15 1.3.1-9.04791 1.3.1-9.04791 Disallow disabled driver signing
16 SD #16 1.3.1-9.05097 1.3.1-9.05097 Disallow disabled anti-cheat components. This is triggered when an anti-cheat component can not start. It is usually due to some problem with the PC and might be fixed by a reboot. Can also be triggered by a virus.
20 SD #20 1.3.1-9.05097 1.3.1-9.05097 Disallow non-standard gta3.img or gta_int.img (For servers not using onPlayerModInfo)
22 SD #22 1.3.4-9.05884 1.3.4-9.05884 Disallow resource download errors/corruption (Lua script files)
23 SD #23 1.3.4-9.05884 1.5.2-9.07911 Disallow resource download errors/corruption (Non-Lua files e.g. png,dff)
28 SD #28 1.3.4-9.05884 1.3.4-9.05884 Disallow Linux Wine
31 SD #31 1.5.3 1.5.3-9.11204 Ignore injected keyboard inputs (e.g. from AutoHotkey, macro's and on screen keyboard)
32 SD #32 1.5.3 1.5.4-9.11528 Ignore injected mouse button inputs and movement (this detection can prevent an ambigious type of aim hacks (bullet spread/recoil manipulation)
33 SD #33 1.5.6 1.5.6 Disallow software of the category 'Net limiter' (ideal for lagswitching or causing structural lag, but may also be used for benign purposes)
34 SD #34 1.5.6 1.5.6 Disallow internet café users (only use as last resort to combat mass ban evasion using café PC's)
35 SD #35 1.5.6 1.5.6 Disallow certain software with "FPS locking" capabilities, for example Fraps recorder.

Particularly racing gamemodes are impacted by players that use FPS lock hotkey at times they need an unfair advantage (like, to drive through a loop faster) or a small speed boost.

Note: it would be better if you use this SD in a custom implementation only (using onPlayerACInfo) instead of kick in mtaserver.conf. For example so that it would only kick when they approach a loop, or are playing a map sensitive to this abuse. Because you'll have to tread carefully, since Fraps is also a popular recording tool.

36 SD #36 1.5.7 1.5.7 Disallow AutoHotKey base application (used to load .ahk files) and Ahk2Exe binaries with embedded scripts.

The possibilities for AutoHotKey are endless and it would be futile for the MTA anti-cheat or scripts to try to cover every case. MTA does not scan the content of .ahk files loaded into the AutoHotKey application, so this special detection allows server owners to stop all uses of AutoHotKey.

Most servers won't need this (cancelling the input sent into GTA with SD #31 and #32 would be sufficient), but some competitive servers have problems with AutoHotKey's interaction with Windows rather than with MTA (which is already ignored by the game). Examples of these toggling firewall rules for lag switching, or toggling of effects that can cause small freezes.

The abuse scripts currently in circulation are mostly AHK-based, so keep in mind that they can easily migrate to a different system. MTA isn't guaranteed to add an SD for that as well. If you're experiencing abuse that consists of lag switching, a scripted solution (such as ConGuard) is the recommended approach.

Finally, remember that the AutoHotKey base application has some legitimate uses, so only use this when you have no other options for ensuring competitive balance.


We are constantly working on keeping the definitions for above SD (special detections) up-to-date, so as to ensure all violating software or circumstances that you opt-in to disable gets detected once used. While we are pro-actively checking if new or unknown software/tools are still being detected under the same signature, it's possible that something slips through the cracks. Therefore, you can help us if you come across anything that should be detectable using SD # but is not currently; send a forum PM to Dutchman101 or ccw with your report.

<client_file name="data/carmods.dat" verify="0"/>

By default, clients may not join a server if they have customized GTA:SA data files. Adding one or more of the above lines excludes files from validation. The file names that can be used are:

  • "anim/ped.ifp"
  • "data/animgrp.dat"
  • "data/ar_stats.dat"
  • "data/carmods.dat"
  • "data/clothes.dat"
  • "data/default.dat"
  • "data/default.ide"
  • "data/furnitur.dat"
  • "data/gta.dat"
  • "data/handling.cfg" - this is unavailable because MTA always ignores this file so that setVehicleHandling works correctly. Click here if you want to load custom handling.cfg files.
  • "data/maps" - this applies to all files within this folder
  • "data/melee.dat"
  • "data/object.dat"
  • "data/peds.ide"
  • "data/pedstats.dat"
  • "data/plants.dat"
  • "data/procobj.dat"
  • "data/surface.dat"
  • "data/surfinfo.dat"
  • "data/timecyc.dat" - minimum server version 1.5.6-9.18322
  • "data/txdcut.ide"
  • "data/vehicles.ide"
  • "data/water1.dat"
  • "data/water.dat"
  • "data/weapon.dat"
  • "models/coll/weapons.col"

<hideac></hideac>

You can use this setting in mtaserver.conf to hide the AC info from the client, showing the following line upon join:

Server AC info: [Undisclosed]

Values: 0 - disabled, 1 - enabled; default value: 0.

Client

When joining a server, the server AC info is displayed in the client console (F8), for example:

Server AC Info: [Allowed client files: None] [Disabled AC: None] [Enabled SD: None]

Disabled AC contains the contents of the server setting from <disableac></disableac>, and Enabled SD contains the contents of the server setting from <enablesd></enablesd>.

Allowed client files contains numbers to indicate which client files the server allows to be modified. The numbers represent these files:

  • 1 - "data/carmods.dat"
  • 2 - "data/animgrp.dat"
  • 4 - "data/ar_stats.dat"
  • 5 - "data/melee.dat"
  • 6 - "data/clothes.dat"
  • 7 - "data/object.dat"
  • 8 - "data/default.dat"
  • 9 - "data/surface.dat"
  • 10 - "data/default.ide"
  • 12 - "data/gta.dat"
  • 13 - "data/surfinfo.dat"
  • 14 - "data/peds.ide"
  • 15 - "data/vehicles.ide"
  • 16 - "data/pedstats.dat"
  • 17 - "data/water.dat"
  • 18 - "data/txdcut.ide"
  • 19 - "data/water1.dat"
  • 20 - "models/coll/weapons.col"
  • 21 - "data/weapon.dat"
  • 22 - "data/plants.dat"
  • 23 - "anim/ped.ifp"
  • 24 - "data/furnitur.dat"
  • 25 - "data/procobj.dat"
  • 26 - "data/maps"
  • 27 - "data/timecyc.dat"

Note: If the info is marked "Undisclosed", it means that the server has decided not to disclose the AC info to the client.

Using modified files

If you want to use modified data files from your GTA:SA install directory, check this check box:

Settings -> Multiplayer -> Use customized GTA:SA files

The checkbox only appears if your GTA:SA data files are customized.

Note: This will restrict your access to some public servers as most do not allow customized data files.