AnthChecker

From UnrealAdminWiki

Contents

What is it?

AnthChecker is an advanced unrealscript-based packagechecker. It will detect a series of cheats that can't be blocked.

Please take a few minutes to read this document, it will spare you and me a lot of trouble.

What does it do?

AnthChecker will validate every client (including clients that run Linux/MacOS) after they enter the server. Depending on the server's settings AnthChecker will:

  • Perform selfchecks to prevent clients from redirecting/bypassing the checking routines
  • Perform CRC (Type 1) checks on files that should be identical on the server and on the client (files like UTPure.u)
  • Perform CRC (Type 2) checks to identify the client's skintextures and kick if they're hacked
  • Perform MD5 checks to identify the client's renderdevice and kick if it's hacked
  • Perform MD5 checks to identify the client's libraries and kick if they're hacked
  • Scan for disallowed files

Installation

To install AnthChecker on your server:

1. Unzip the contents of this zip package in your server's system folder.

2. Open your server's unrealtournament.ini file and find the line that reads "[Engine.GameEngine]".

3. Add these lines under it:

ServerActors=AnthCheckerS_<ver>.ACActor
ServerPackages=AnthCheckerC_<ver> 

4. Move to the end of your UT.ini file and add these lines

  (you can find the explanation of the settings under 4) Settings):    
   
[AnthCheckerS_<ver>.ACActor]
bKickUnknownRenderer=true
bKickUnknownLibrary=true
bBroadCastJoin=true
bBroadCastIPs=false
bExternalNotify=false
bSelfCheck=true
bPureCheck=true
bEUTCheck=false
bSkinCheck=true
bSoundCheck=true
bShowConsoleMessages=true
TimeOut=30
CheckDelay=3.0
bReportCheats=True
bReceiveUpdates=True
bExternalLogs=true
LogPrefix=
LogPath=

5. Restart your server

Note: replace <ver> by the version of AnthChecker you've installed. (replace it by v133 if you've installed v1.33 etc)

Settings

You can easily change the AnthChecker settings by opening your server's ini file and changing the lines you added at the end.

   bKickUnknownRenderer : set to false if you don't want to kick clients with an unknown renderdevice
   bKickUnknownLibraries: set to false if you don't want to kick clients with unknown libraries
   bBroadCastJoin       : set to false if you don't want to broadcast every client's nickname/renderdevice/operating system after the validation
   bBroadCastIPs        : set to true if you want to add the client's IP's to the bBroadCastJoin messages
   bExternalNotify      : set to true if you want AnthChecker to send playerjoin reports to other mods (requires compatible mod)
   bSelfCheck           : set to false if you don't want to perform a crc check on the anthchecker client package
   bPureCheck           : set to false if you don't want to perform a crc check on the utpure package
   bEUTCheck            : set to true if you want to perform a crc check on the EUT package
   bSkinCheck           : set to false if you don't want to perform crc checks on the skintextures
   bSoundCheck          : set to false if you don't want to perform a crc check on the female2voice package
   bShowConsoleMessages : set to false if you don't want to display what's going on in the client's console
   bReceiveUpdates      : set to false if you don't want to receive info about new renderdevices from the AnthChecker masterserver
   bReportCheats        : set to false if you don't want AnthChecker to report cheating attempts to the AnthChecker masterserver
   TimeOut              : ammount of time the client gets to finish the checks (in seconds)
   CheckDelay           : ammount of time between the playerjoin and the start of the checks (in seconds)
   Packages[x]          : you can manually add files to crc (type 1) check here
                          syntax: <file extension>,<filename>,<packagepercent (1-255)> (*)
   bExternalLogs        : set to false if you don't want to log AnthChecker's kicks to external files
   LogPrefix            : Prefix of the external logfiles (default: [AC])
   LogPath              : The path in which the external logfiles are stored (default: ../Logs/)

!! Important !!: Due to the limitations of the unreal engine, you're not advised to manually add files.
		  If you do decide to do so, use a small packagepercent, UT will usually crash after crc checking
		  10Mb of data.
   			  
(*) if for example you want to perform a crc type 1 check on the 10 first bytes of every 255-byte block of CTF-Gauntlet.unr, 
you'd have to add "unr,CTF-Gauntlet,10" (without the quotes)

History

v1.38 (Public):

  • [Added] Malformed string servercrasher fix
  • [Added] OS Checking bypass kick (kicktype 10)
  • [Changed] Rewrote a part of the HTTP client for better stability

v1.37 (Public):

  • [Changed] Removed an instruction in the HTTP Client that might have caused crashes on some linux servers
  • [Added] Options ACLinkMode and ACDelay. These options can be used by those who experience problems with the auto-updates.

v1.36 (Internal):

  • [Fixed] Bug that prevented the manual package adding option from working.

v1.35 (Internal):

  • [Changed] Disabled the cachecleaner for MacOS. This will resolve type 3 kicks on MacOS 9.x.

v1.34 (Public):

  • [Fixed] Security flaw in the clientcode. Could have been used to redirect CRC Checks.
  • [Fixed] Timeout issues caused by a typo in the serverside code.
  • [Added] Option bKickUnknownSound
  • [Added] Option bKickUnknownSkin

v1.33 (Public):

  • [Changed] Minor security update in the clientcode

v1.32 (Internal):

  • [Changed] Improved the active renderdevice detection (should resolve some type 1 kicks)
  • [Changed] Some improvements in the actor code
  • [Added] Hashes for a lot of libraries (UTCacheCleaner, UTWinAmp, UTDCv17b, OldUnreal MediaPatches, UT v436 Linux, Editor binaries)
  • [Added] Posibility to broadcast playerjoins to other mods (bExternalNotify option)
  • [Added] bEUTCheck option
  • [Added] bExternalLogs option
  • [Fixed] Bug in the HTTP updating code
  • [Fixed] Bug that caused timeouts if bGUIDCheck was still in the ini file

v1.31 (Public):

  • [Fixed] Critical bug in the packet handler that caused random timeouts for some players

v1.30 (Public):

  • [Added] Packet handler that allows the client to send long strings to the server without making it crash
  • [Added] Extra selfchecks to prevent CRC redirection
  • [Added] New hashes
  • [Added] Option CheckDelay to specify the number of seconds between the playerjoin and the start of the checks
  • [Added] Checks to detect illegal libraries loaded by the client, some cheatcoders use this exploit to bypass UTDC
  • [Added] Option bKickUnknownLibrary
  • [Added] Server receives updated library whitelists from the masterserver (only if bReceiveUpdates is set to true)
  • [Changed] Option bKickUnknown renamed to bKickUnknownRenderer
  • [Changed] AC no longer uses a mutator for client-server communication
  • [Changed] Removed Type 8 (GUID) kick
  • [Changed] Clients can see which files are being checked by AnthChecker
  • [Changed] Rewrote some routines for better performance
  • [Changed] Forced the client to regenerate GUID if it's not valid
  • [Changed] New cache cleaner code for mac/linux -> no more reconnect window
  • [Fixed] Type 1 kicks caused by a bug in the pathsparser
  • [Fixed] Some false type 7 (disallowed files) kicks
  • [Fixed] MacOS issues

v1.29 (Public):

  • [Fixed] Some false GUID kicks
  • [Added] New renderhashes

v1.28 (Internal):

  • [Changed] Rewrote some laggy core routines
  • [Changed] bSkinCheck now picks 2 random skins to check instead of 7

v1.27 (Public):

  • [Fixed] Players getting kicktype 8 because of the slow connection between the UT server and the masterserver
  • [Fixed] Illegal GUID's for linux clients with v451
  • [Changed] Linux/Mac Cachecleaner can move multiple files at one time

v1.26 (Internal):

  • [Added] Routine to find cached files even when the cache.ini file is corrupted
  • [Added] Option bBroadCastIPs
  • [Added] AnthChecker version gets logged to the external logs
  • [Changed] Players get to see the URL of my forum + AnthChecker version/build when they get kicked

v1.25 (Internal) :

  • [Added] Extra GUID check

v1.24 (Internal) :

  • [Fixed] bug in masterserver encryption
  • [Fixed] bug in the skinidentification (players with unknown skins were allowed to enter the server)
  • [Fixed] Linux/Mac timeouts
  • [Fixed] Critical bug that broke every mutator loaded after AnthChecker (this also affected SmartCTF/BDBMapVote/3dfxmapvote/...)
  • [Fixed] bug that caused a lot of type 1 kicks (failed to generate checksum) for cached files (only happened for clients with corrupted cache.ini files)
  • [Added] options LogPath and LogPrefix for the external logs
  • [Added] Support for clients that have multiple system/textures/... folders
  • [Added] Blocked "EnhancedSkins"
  • [Added] New hashes for several renderers
  • [Added] GUID verification (so far, this is only used for the masterserver)
  • [Added] AnthChecker automaticly adds itself to the serverpackages list if needed
  • [Changed] names of the Ref1 skins to Ref 1/Warez

v1.23 (Public) :

  • First public release

Credits

  • Azazel & UnrealAdmin  : for hosting the UTGL masterserver and the forum
  • Nuffy & Magma  : for providing gamearena.co.uk betatest servers
  • Cratos  : for providing renderdevices and a betatest server
  • TNSe  : for advice/ideas/help
  • Just_Me  : for advice/ideas/help
  • Sardukar  : for advice/ideas/help
  • Obsidian & Rush & Neopythe : for linux betatesting
  • ZorroTheFox & The_Dave  : for MacOS betatesting
  • Petr Jelinek  : for the original MD5 code

Known issues

v1.31

  • The initial build of this version only include hashes for UTDCv16b and UTDCv17. This results in a hacked file error for other versions of UTDC. This will be fixed in a second build of the serveractor.
  • If all players are kicked from the server after 30 seconds this is because a line is missing from the AnthChecker configuration section in the server.ini. You need to add the line bGUIDCheck=True (thanks Maj for pointing this out).
  • Timeouts might occur after the 32th player join. This is a critical bug. Serveradmins are advised to upgrade to v1.34 asap
  • In some cases AnthChecker might fail to correctly identify packages. This might result in false kicks. Especially servers with custom skinpackages might be affected by this issue. Serveradmins are advised to upgrade to v1.34 asap.

v1.29

  • Clients using the sound files of the french version of UT are rejected (maybe other languages also).
  • Fails to generate checksums if multiple copies of a file can be found in the client's defined paths.
  • Client gets illegal checksum error when AnthChecker package is corrupted.
  • Timeouts occur when other mutators like the latest version of x3dfxmapvote (v2.5c) break the mutatorchain.
  • Macintosh clients will get a kicktype 1 and fail to generate a checksum for AnthCheckerC_v129.
  • Linux servers might crash with the "Signal: SIGSEGV [segmentation fault]" message in the log. It is advised to upgrade to AnthChecker 1.30.

Quick fixes

  • Illegal GUIDs/Kick type 8 :

Cause : This usually occurs when UT has been moved from one computer to another or the GUID file in System has become corrupted. Fix : Delete the GUID file in your System and try to reconnect.

Log reference

  • Ref 1/Warez Shadow skins. Concerns commandoskins, Female1Skins, Soldierskins.
### ----------- Additional information -----------
### - KickType : 3
### - AnthChecker : v1.29 (Build 1)
### - Reason : Illegal checksum received (bytehack)!
### - File : commandoskins
### - Checksum : -2075833859
### - StdChecksum : 148560457
### - FileSize : 4318050
### - Ident : HACKED - CommandoSkins - Ref 1/Warez
### - Status : F / F / F / F
### -------------------------------------------------
  • Illegal GUID.
### ----------- Additional information -----------
### - KickType : 8
### - AnthChecker : v1.29 (Build 1)
### - Reason : Illegal GUID!
### - Received : WVINa37a33/2:/4227a3;<5:<74a40517_1787863388

Demo playback problems

You may obtain an error message like the following when playing back a demo.

AnthChecker: AnthChecker v1.31 (Build 1)
AnthChecker: -----------------------------------------
AnthChecker: Checking Operating System
ScriptWarning: ACReplicationInfo DM-Liandri.ACReplicationInfo0 (Function AnthCheckerC_v131.ACReplicationInfo.��:00BA) Accessed None
AnthChecker: Checking Paths
AnthChecker: Renderdevice Check - Stage 1
ScriptWarning: ACReplicationInfo DM-Liandri.ACReplicationInfo0 (Function AnthCheckerC_v131.ACReplicationInfo.��:00BA) Accessed None
AnthChecker: Renderdevice Check - Stage 2
ScriptWarning: ACReplicationInfo DM-Liandri.ACReplicationInfo0 (Function AnthCheckerC_v131.ACReplicationInfo.��:00BA) Accessed None
AnthChecker: Self Integrity Check - Stage 1
ScriptWarning: ACReplicationInfo DM-Liandri.ACReplicationInfo0 (Function AnthCheckerC_v131.ACReplicationInfo.��:00BA) Accessed None
AnthChecker: Self Integrity Check - Stage 2
ScriptWarning: ACReplicationInfo DM-Liandri.ACReplicationInfo0 (Function AnthCheckerC_v131.ACReplicationInfo.��:00BA) Accessed None
AnthChecker: Self Integrity Check - Stage 3
ScriptWarning: ACReplicationInfo DM-Liandri.ACReplicationInfo0 (Function AnthCheckerC_v131.ACReplicationInfo.�:0023) Accessed None
Critical: AStatLog::execInitialCheck
Critical: (ACReplicationInfo DM-Liandri.ACReplicationInfo0 @ Function AnthCheckerC_v131.ACReplicationInfo.� : 002C)
Critical: UObject::ProcessEvent
Critical: (ACReplicationInfo DM-Liandri.ACReplicationInfo0, Function AnthCheckerC_v131.ACReplicationInfo.xxIC)
Critical: RemoteCall
Critical: HandleStream
Critical: UActorChannel::ReceivedBunch
Critical: (Actor ACReplicationInfo0)
Critical: UChannel::ReceivedSequencedBunch
Critical: Direct
Critical: UChannel::ReceivedRawBunch
Critical: DispatchDataToChannel
Critical: BunchData
Critical: UNetConnection::ReceivedPacket
Critical: UNetConnection::ReceivedRawPacket
Critical: UuDemoDriver:TickDispatch
Critical: UpdatePreDemoRec
Critical: ULevel::Tick
Critical: (NetMode=3)
Critical: TickLevel
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop
Exit: Executing UObject::StaticShutdownAfterError
Exit: Executing UWindowsClient::ShutdownAfterError
Exit: UGalaxyAudioSubsystem::ShutdownAfterError
Log: DirectDraw End Mode
Exit: UOpenGLRenderDevice::ShutdownAfterError
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 02/03/07 20:47:23
the UnrealAdmin Page
Site Sponsor


GamingHosting
History
  • AnthChecker