AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Snippets and Tutorials (https://forums.alliedmods.net/forumdisplay.php?f=112)
-   -   [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat) (https://forums.alliedmods.net/showthread.php?t=315104)

CowGod 03-22-2019 17:10

[CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
1 Attachment(s)
[CS:GO] [G]amerX Anti-Cheat AKA Cow Anti-Cheat Pasta

ABOUT:
Ladies and Gentlemen grab your popcorn, because this thread is about to be LLIIIIIITTTTTTT. I expect this thread to get deleted or unapproved btw as yes it's pretty toxic <3. However I feel like regardless this type of behavior from a AM community member and community owner at that shouldn't be tolerated.

So let me start by saying I did not create this plugin and I want absolutely no credit for anything to do with this plugin. Even though most all of the detection methods are copy pasted directly from Cow Anti-Cheat. I am releasing this so no other SM/AM community members get scammed.

I was made aware that a steam user under the name "The [G]amerX" http://steamcommunity.com/profiles/76561197964477177 https://forums.alliedmods.net/member.php?u=142306 was selling an anti-cheat for CS:GO servers that was marketed as a high quality, and robust anti-cheat system. He was selling this plugin for $140. Once I contacted him I said it's very disrespectful to copy paste my detection methods and violates copy right. I then asked for him to put the GNU License back on the file and give me credit for my work, he said "I don't care what you think of me" and blocked me. Without further ado lets take a deep dive into this "Top SHELf PremiuM QuALiTy AnTi-cheAT".

QUALITY CODE:
Lets start with the first thing that caught my eye while I was looking through this masterpiece of a plugin.

EZFrags Detection Method
PHP Code:

if(IsValidClient(client) && detectEzFrags[client])
    {
        
char text[512];
        
text[0] = '\0';
        
GetCmdArgString(textsizeof(text));
        
StripQuotes(text);
        
TrimString(text);
        if(
        
StrEqual(text"Visit www.EZfrags.co.uk for the finest public & private CS:GO cheats"false) ||
        
StrEqual(text"If I was cheating, I'd use www.EZfrags.co.uk"false) ||
        
StrEqual(text"Stop being a noob! Get good with www.EZfrags.co.uk"false) ||
        
StrEqual(text"Think you could do better? Not without www.EZfrags.co.uk"false) ||
        
StrEqual(text"I'm not using www.EZfrags.co.uk, you're just bad"false))
        {
            
detectEzFrags_count[client]++;
            
FormatEx(discordsizeof(discord), "%N %s has been detected for EZfrags cheats! (Check #%i)"clientnonprime[client]?"[Non-Prime]":""detectEzFrags_count[client]);
            
SendMessageToAdmins(discord);
            
FormatEx(discordsizeof(discord), "**%N** (%s) %s has been detected for **EZfrags cheats**! (Check #%i)"clientf_authid[client], nonprime[client]?"[Non-Prime]":""detectEzFrags_count[client]);
            
SendMessageToDiscord("anticheat"discord);
            if(
detectEzFrags_count[client] > 1)
            {
                
FormatEx(discordsizeof(discord), "%N %s has been detected for EZfrags cheats! (Banned)"clientnonprime[client]?"[Non-Prime]":"");
                
SendMessageToAdmins(discord);
                
FormatEx(discordsizeof(discord), "**%N** (%s) %s has been detected for **EZfrags cheats**! (Banned)"clientf_authid[client], nonprime[client]?"[Non-Prime]":"");
                
SendMessageToDiscord("anticheat"discord);
                
SBBanPlayer(0client0"Mutli-Hack");
            }
        }
    } 

This anti-cheat is marketed as "100% detect ezfrags". With this detection method a legit player could type one of these chat messages 2 times and get permanently banned for "Mutli-Hack" (yes I know he even spells Multi-Hack wrong).

Name Stealer Detection Method
PHP Code:

public void CheckClientName(int client)
{
    
char steamid64[512];
    
GetClientAuthId(clientAuthId_SteamID64steamid64sizeof(steamid64));
    
char url[PLATFORM_MAX_PATH];
    
Format(urlsizeof(url), "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=6723D12183165E70AA8630ED992F01C7&steamids=%s"steamid64);
    
Handle request SteamWorks_CreateHTTPRequest(k_EHTTPMethodGETurl);
    if(
request == null) return;
    
SteamWorks_SendHTTPRequest(request);
    
float timeouttime GetEngineTime() + 5.0;
    
int responsesize 0;
    while(
GetEngineTime() < timeouttime)
    {
        
SteamWorks_GetHTTPResponseBodySize(requestresponsesize);
        if(
responsesize 0)
        {
            
OnInfoReceived(requestfalsetruek_EHTTPStatusCode200OK);
            
checking_name client;
            return;
        }
    }
    
OnInfoReceived(requesttruefalsek_EHTTPStatusCode5xxUnknown);
}
public 
int OnInfoReceived(Handle requestbool failurebool requestSuccessfulEHTTPStatusCode statusCode)
{
    if(!
failure && requestSuccessful && statusCode == k_EHTTPStatusCode200OK)
        
SteamWorks_GetHTTPResponseBodyCallback(requestAPIWebResponse);
    
delete request;
    return 
0;
}
public 
void APIWebResponse(char[] response)
{
    
KeyValues Kv = new KeyValues("response");
    
Kv.SetEscapeSequences(true);
    if(
Kv.ImportFromString(response))
    {
        if(
Kv.JumpToKey("players"))
        {
            if(
Kv.JumpToKey("0"))
            {
                
char szGameName[MAX_NAME_LENGTH]; GetClientName(checking_nameszGameNamesizeof(szGameName));
                
char szSteamName[MAX_NAME_LENGTH]; Kv.GetString("personaname"szSteamNamesizeof(szSteamName));
                if(!
StrEqual(szGameNameszSteamNametrue))
                {
                    
FormatEx(discordsizeof(discord), "%N %s has been detected for Name Stealer/Faker! [Game Name %s | Steam Name: %s]"checking_namenonprime[checking_name]?"[Non-Prime]":""szGameNameszSteamName);
                    
SendMessageToAdmins(discord);
                    
FormatEx(discordsizeof(discord), "**%N** (%s) %s has been detected for **Name Stealer/Faker**! [Game Name **%s** | Steam Name: **%s**]"checking_namef_authid[checking_name], nonprime[checking_name]?"[Non-Prime]":""szGameNameszSteamName);
                    
SendMessageToDiscord("anticheat"discord);
                    
checking_name 0;
                    
delete Kv;
                }
            }
            else 
delete Kv;
        }
        else 
delete Kv;
    }
    else 
delete Kv;
    
checking_name 0;


In case you don't want to read the spaghetti above, he is querying the SteamAPI to grab players names to check for name stealing. Only if GetClientName didn't already exist....

COPIED CODE:

[G]amerX copied every single detection method from Cow Anti-Cheat line for line. This is just an example of one of them. You can look through so source if you would like more proof.
https://cdn.discordapp.com/attachmen...520/COW_AC.png

He also stole methods line for line from SMAC. Pretty wild, probably would have been less time consuming to just write his own instead of moving everything over...
https://cdn.discordapp.com/attachmen...18081/SMAC.png

I don't really have much left to say. Except [G]amerX is the scum of the SM/AM community and I would like to see him banned. Don't buy into his scams and if anyone is contacted by him to purchase a plugin "he made", just message me and I will personally make it for free. :)

Cruze 03-23-2019 06:49

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
Well, that is why AM don't encourage the sale of turnkey.

DabberDoug 03-23-2019 18:32

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
Classic cow am I right

nguyenbaodanh 03-23-2019 23:06

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
not finished? can't compile

404UserNotFound 03-23-2019 23:06

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
I've added a note into my signature as frankly I'm tired of seeing these cockroaches stealing and reselling other people's work. If someone bychance sees it and it helps them not get rooked by these tools, then I've done my job.

CowGod 03-24-2019 04:04

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
Quote:

Originally Posted by 404UNF (Post 2644651)
I've added a note into my signature as frankly I'm tired of seeing these cockroaches stealing and reselling other people's work. If someone bychance sees it and it helps them not get rooked by these tools, then I've done my job.

Preach! :up:

EMINEM_FB 04-04-2019 12:30

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
Thank you "CowGod" for your info :)

404UserNotFound 04-09-2019 17:07

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
Didn't even realize [G]amerX was a member of these forums until Sreaper happened to send me this link.

eyal282 04-27-2019 07:09

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
You know that I've had a cheater test your anti cheat and conclude it's better than the 10 million dollar vac, so in a way the scam is technically true about being high quality. At least for Cac


Also I think the GetClientName is possibly capable of being manipulated by a cheater, I have no good knowledge about it but it definitely doesn't have a back end check like the AuthId check does.

shavit 04-29-2019 08:17

Re: [CS:GO] [G]amerX Anti-Cheat (Copy Pasta of Cow Anti-Cheat)
 
Quote:

Originally Posted by eyal282 (Post 2649095)
You know that I've had a cheater test your anti cheat and conclude it's better than the 10 million dollar vac, so in a way the scam is technically true about being high quality. At least for Cac


Also I think the GetClientName is possibly capable of being manipulated by a cheater, I have no good knowledge about it but it definitely doesn't have a back end check like the AuthId check does.

It's not better than VAC by any means. VAC can see modules inside the game process, all running threads, it has integrity routines to make sure certain memory regions aren't being detoured/edited, it can also see what processes have open handles to the game. You can't compare a server sided anti-cheat to a client-sided one.

GetClientName does not need a backend check, because you cannot have one. Unless you want overhead by contacting the Steam API and asking for the user's name, and not allowing them to change it inside your server. It seems bothersome to only show name changes after re-connection anyway.


All times are GMT -4. The time now is 19:50.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.