Counter-Strike, the most hackable game in esports history. 
Published: 2020-07-15 07:56:10

Initially released in 2000, Counterstrike has seen many iterations and games in what was once one of the biggest franchises in its peak. Although counterstrike is still popular, many consumers have been repulsed by its community and the rampant issue of hacking within both its casual and competitive scene.

At the current time, Counter-Strike Global offensive has become one of the most frequently hacked games of all time, and although the team at Valve has fought hard to counteract this issue, it has almost been to a loss since there are fundamental limitations to fixing the plague on their community. 

Today I am going to do as best a job I can to show you every side of this dilemma, the hacking community, the anti-cheat systems implemented, and the basic methodology used to abuse systems existing inside the game.

<h1>The vulrabilities</h1>
Ok, so the best place to start with this issue, is with the fundamental and technological issues within CS:GO which has allowed the game hacking community to continually grow and develop around this game. 

<h2>The underlying engine</h2>
First and foremost, unlike many popular games that have generated similar revenue, the CounterStrike series has NEVER deviated off the fundamental technologies that were used to make the original game all the way back in 2000. Built-in C++, the Source engine for the most part has stayed fundamentally static since its original development.

Now by itself, this statement does not provide enough context into how big this advantage is. And to put it bluntly, It's huge. As you might know, the Source engine is not just the driving force of CS:GO, its also the underlying engine of most Valve games. Meaning a lot of this concept is transferrable to its other titles, although unlike CS:GO there have not been many benefits to hacking its other titles. 

In initial development, Valve knew they were in line to be a major player in the game development market. Due to this Valve set out to create something that largely provided all of the 'out of the box' technologies for the titles they were developing. Players, raytracing (Not RTX) and, visual effects to name some, were all coupled into the engine.

Now, this creates a major issue because this means there is almost identicality in the data structuring and functional structuring of each of the counter strike games. Meaning it took little to no effort to port a hack from the previous title to the next.

That coupled in with the engine being poorly optimized in terms of security meant hackers had little to no issue making the changes. To show a vivid example of the kind of issue persisting in this game, <a src="https://github.com/VSES/SourceEngine2007/tree/master/src_main">this</a> game engine leak dated from 2007 has been one of the most persistent and helpful resources in the development process of hacks for this game.

<h2>The Anti Cheat system</h2>
Valve Anti Cheat better known as VAC was originally created back in 2002 after Valve realized the major issue with their flagship FPS released in 2000. For its time, VAC was a state of the art system that uses cheat detection techniques still used to this day in both anti-cheat and antiviruses.

Although VAC has created many sub-systems that aided in combatting the issues in their games, the driving force algorithm will be the only one I talk about today. 

Rightly named Signature scanning, this technique entails the programmatic checking of all running processes for code patterns in the memory allocations of said program for familiarities. These familiarities, known as signatures are hashed versions of exact code that are stored remotely in VAC's servers. If you are diligent you might already realise there are major problems with such a system.

First and foremost, this system requires manual verification and data entry by employees to ensure there are signatures to check against. Secondly, alike programmers and languages, hacks created for the games would differentiate drastically in comparison to the verbatim match required by the system, with the only advantage being its ability to detecting a pre-existing hack they had formal knowledge of, as well as there being a requirement of the hack to not change the signatured code.

Although this seems easy and transparent to avoid, it did create difficulties for game hackers that had signatured code because they didn't know which segments had been signatured and although hackers have made attempts to understand the signature process to find the exact point at which the VAC is handed down, it is still unknown.

As well as this, to further make the counteracting of this system difficult, Valve implemented a system where all users receive delayed VAC bans. Once again this gave an edge to their systems and servers as they were essentially countering the vigilant community that reported the signatured hacks. Although hackers have speculated how long these delays can go for, its still unknown due to the variance, some users have reported delays upwards of months although the authenticity of these reports is unknown.

Although Valve has created formidable systems to counter hacking, the hackability of the game due to its mechanics and profitability have forced hackers to further efforts to ensure they are not signatured. Due to the length of the story, I not will talk about the rise and fall of one of the largest game hacks in the counter strike community. But please let me know if that's something you'd like to see.


<h1>How its done</h1>
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7x7mf4mpklf62jn3gkhg.gif)

In essence, hacking this game can seem daunting but for a person that has successfully hacked this game from many means, I can assure you with a little time and effort it is all but impossible.

Remember how I talked about the leaked source engine from 2007, well now I can explain its great part in this. But first I need to explain the two camps of logic that have driven hacks for this game.

These two camps are internal and external in the domain of the game itself, to be more specific internal means the hacks are operated inside the game runtime whereas external hacks operate outside the application. Although similar, both methods require different approaches for success.

<h2>Internal hacks</h2>
To put it fundamentally, Internal hacks are generally a similar or extension of the original game code which then is injected into the system memory allocation of the game itself either with the intent to overwrite or add respectively. In itself this process is complicated as it requires of an external injector to lodge the payload in the game itself as it runs. It also creates complications as similar to the hacks themselves the injectors can get signatured, It was definitely not uncommon to see a popular injector cause VAC bans.

Now, once inside the payload will operate like an extension of the game, meaning you can hook into Valve UI systems, functions and much more, the game itself becomes a sandbox for the hacker, as you might already assume, this technique is the most capable and comprehensive of the two hacking domains meaning most paid cheats run in this way. Although it comes with a drawback that you MUST develop the extensions in the native language of the engine, in this case, that is C++. 

Now like most titles, the current version of the release is obfuscated to prevent transparency of the system itself. So this is where the leaked version of the Source engine comes in handy since it gives hackers a peek into the functionality and data structures they intend to target on the inside, although not essential it gives hackers a great leg up in the development process.

<h2>External</h2>
This methodology is the most familiar to me due to my older development project <a src="https://github.com/TylerBurnett/Aim-God">Aim God</a>. Now in terms of approach external works in a similar way to internal in the sense that both require injection into the memory allocation for the game. But instead of being able to hook and re-write the functionality of the client you instead need to utilize the data structures to your advantage to hack it. 

For instance, creating an aimbot for the game required a person to get player locations from memory, compare those to the player position and screenspace, then Lerp the user's cursor towards their head.

Now CS:GO is a game that had data integrity checks, these checks ran every other iteration or so to check to the validity of conditions. For instance, the game knew you that you shouldn't be able to see the external glow of players if you weren't spectating. To counteract this efficiency of code is imperative to ensure you were forcing these data changes back right after. So essentially all external hack functions were race conditions that ensured stays the way we want it to.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ltq99c12uog4aswh4hik.gif)

Like everything this method has its drawbacks and its benefits but in general, I preferred this method due to my reluctance to learn C++.

<h1>Thats all folks</h1>
I hope from this article I've given you a window into the game hacking scene for CS:GO, although a lot of the concepts discussed and universal to the game hacking scene, If you'd love to see more of this content let me know because this article doesn't start to scratch the surface of this community, also there's a very interesting story behind the rise and fall of the largest game hacking company to hit CS:GO.