Valve Anti-Cheat

From Valve Developer Community
Jump to navigation Jump to search
English (en)Tiếng Việt (vi)中文 (zh)Translate (Translate)

VAC Valve Anti-Cheat, more commonly known by its acronym VAC, is a Wikipedia icon proprietary anti-cheat system developed by Valve for use in GoldSrc, Source and Source 2 multiplayer games, as well as many other third-party multiplayer games on various other engines (such as the original COD: Modern Warfare 2 from 2009).

Valve Anti-Cheat is a shared element of the Source engine; thus, it is supported by any Source-based multiplayer game. Not all Source games use VAC however; for example, Apex Legends Apex Legends uses Easy Anti-Cheat (EAC).

Todo: VAC errors, such as File:Vac blocked.png

List of Games using VAC

There are currently over 100 games that use VAC (both games using non-Valve and Valve engines), according to Steam Store when searching for games with VAC. However some of the list may be incorrect, such as singleplayer games being included on the list, or some games were missing on the list.

GoldSrc

Note.pngNote:If the player is VAC banned in one of these GoldSrc games, they will get banned in all of them.

Source

Note.pngNote:If the player is VAC banned in one of these Source games, they will get banned in all of them. But notably, getting banned in Counter-Strike: Global Offensive Counter-Strike: Global Offensive or Team Fortress 2 Team Fortress 2 will not get you banned from the other games and vice versa.

Source 2

  • Counter-Strike 2 Counter-Strike 2
    • If you receive a VAC ban (for any game) you will no longer have access to the CS:GO and CS2 Store, receive CS:GO and CS2 item drops, or be able to trade CS:GO and CS2 items.
    • Note.pngNote:Also in CS2, if a cheater was detected by VAC Live, the match will be automatically cancelled.[1]
  • Dota 2 Dota 2
  • Confirm:Does Dota Underlords Dota Underlords support VAC?
Note.pngNote:If the player is VAC banned in one of these Source 2 games, they will get banned in all of them.

Other engines

Heuristics

When a player is connected to a VAC-secured server (denoted by a security badge and the letter V in the server browser), the VAC system checks if any foreign processes are hooked into the player's local game binaries. If the VAC check finds a positive ID for any possible cheating tool, the offending player's Steam account is then permanently banned from all VAC-secured servers after a variable amount of time. If the player was falsely banned for using software that is not a cheating tool (such as Recording software, overlays, drivers, etc...), or by launching the game with updated game DLLs files which was mistakenly marked as cheating tools/DLL injectors, the player may get unbanned by Valve.

One example of false positive VAC bans, in this case with COD: Modern Warfare 2, due to DLL files being updated by Steam after it was loaded by the game, over 12,000 players were banned. These bans have been revoked and those who got affected by the ban have been gifted Left 4 Dead 2 Left 4 Dead 2 for free by Valve, plus one to send as a gift to friends. Another one, recently, affects most AMD Radeon 7000 series graphics card users with "Anti-Lag/+" feature enabled, which results in false VAC ban in Counter-Strike 2 Counter-Strike 2 and other games such as Apex Legends Apex Legends (though it uses EAC). This issue was partially resolved with the updated AMD driver, which temporarily disabled the "Anti-Lag+" feature, and both developers of the affected games above have reversed all bans related to the Anti-Lag+.

Message displayed to a VAC-banned client. Screenshot from Team Fortress 2 Team Fortress 2.

Valve Anti-Cheat will not detect content hacks such as invisible wall textures or bright-colored player models. Server admins that wish to block such activity will need to run a pure server.

Using VAC

For server admins who wish to use VAC, you should run your server with the -secure command line parameter. If you are using the Steam srcds frontend, make sure that the Secure (Valve Anti-Cheat) option is checked.

Code Injection

As a developer, there are situations in which you may legitimately wish to inject code into the application process of a game that uses VAC or Trusted Mode. In this case, you need to ensure that your code injection only takes place when and if the game client application is operated in the appropriate mode to avoid the user receiving a ban. Check with the game’s documentation to find out what, if any, settings have to be applied.

Code Injection in CS:GO & CS2

If the code you wish to inject is Authenticode signed, the CS:GO and CS2 game client has to be run in “Allow Third Party Software” mode; for any other code the CS:GO and CS2 game client has to be run in “Insecure” mode.

Game ban vs. VAC ban

Sometimes, a player may only get banned from a single game instead of all VAC games. This is because they received a game ban, which is not the same as a VAC ban. A game developer or moderator usually initiates game bans that will only restrict features of one specific game (e.g. Overwatch in CS:GO and/or CS2, aswell as TF2 (since June 2024) gave out game bans and not VAC bans). VAC bans can only be given by VAC or Valve employees. [confirm]

References

References