Meet the project
Cheat Engine is a tool for memory analysis and manipulation, for the purpose of modding and reverse engineering processes. It operates on one of the lowest possible levels of abstraction and gives a real insight into the inner workings of other processes. Directly observing the behaviour of processes also allows for reverse engineering of secondary artefacts, such as encryption keys, file formats and communication protocols. This gives the user back the freedom to control the processes on their machine in the way they want.
Main capabilities and use cases
Cheat Engine is a memory scanner and debugging tool used in multiple areas, mostly in gaming, where it is often used to cheat by modifying field values in order to increment scores, resources or any other value that impacts the gameplay.
It can also be used in a more general way to analyse local processes. The tool is able to monitor all data in a running process, as well as make it possible to modify these values. This makes it a suitable tool to use for things like reverse engineering.
The application itself mostly consists of a single complex form called TMainForm, described in MainUnit.pas, and a large collection of GUI widgets that are spawned by this form in response to user events. Most of the data the application uses is directly contained within the GUI, and as such, the GUI also reflects the internal representation of the data.
The most important parts of the program for general users are; the ability to do a full scan of the process memory for specific values; the ability to trace what instructions interact with specific values; and the ability to fairly arbitrarily alter process memory.
More advanced use cases are framework-specific, such as the MonoDataCollector. Cheat Engine can inject this into a program running on the Mono framework in order to directly interact with the framework. This gives Cheat Engine access to framework internals, such as the MonoAssemblies, the basic blocks of the program. This not only makes it easier to figure out the internal representation of objects, but also allows for direct interactions with those objects by scanning for instances and calling functions on those objects.
Reverse engineering efforts can be shared by means of Cheat Engine “tables” 1, which can include arbitrary scripts. These used to be hosted on the official Cheat Engine site, but after a cease and desist notice, this was moved off-site.
These cheat tables can also be exported as so-called “trainers”, which are mildly obfuscated standalone versions of tables to allow end-users to provide others with cheats without directly exposing their “work”.
Cheat Engine allows Lua scripts to be embedded in cheat tables. This allows the user to do a more advanced array-of-bytes scan to look for specific known structures or instructions in the program to find dynamic information. Since these scripts require no compilation before running, they are often shared on public forums because they can easily be checked and verified. This resulted in a large collection of publicly available Lua extensions for Cheat Engine.
All in all, Cheat Engine offers a wide variety of features that can be extended or modified to make it a suitable tool for countless applications.
Stakeholder analysis
This section introduces the stakeholders of Cheat Engine. The roles and needs of these stakeholders are explained. In addition, the stakeholders are classified into three general groups: People associated with the development, end-users and Business.
-
People associated with the development
The Cheat Engine project was created in 2015. This project is primarily used for private and educational purposes. The Cheat Engine is an open-source code development environment focused on generating mods for games and debugging users’ applications, checking how the system works, and more.-
Lead developer
Cheat engine was originally written by a single developer. Besides actively maintaining the tool, he can also often be found engaging with users on the Cheat Engine forums. -
Contributors The contributors of Cheat Engine are users who want to make an improvement in the application. The users can contact the developers and introduce their improvement. Contributing to Cheat Engine can be done in many ways, for example by fixing bugs or adding shortcuts in the GUI. A total of 45 contributors have participated and improved the project since 2015.
-
-
End-users
Cheat Engine focuses on modifying games and applications for personal use. The Cheat Engine is open to all kinds of users, provided that the EULA/TOS of the particular game/application is not violated. Generally, users use Cheat Engine to modify game data for the purpose of increasing or decreasing the difficulty of the game. The end-users can roughly be further divided into the users that create cheat tables and those that merely download and use tables others created. Most of the more complex use cases of the program are irrelevant for the latter group and cater more to the cheat table makers. -
Business
The Cheat Engine is funded by means of a donation platform. People that donate are provided with a simpler installer, which is mostly a gesture of appreciation, as the entire source code is freely available and anyone is able to build their own version of the application.
Key quality attributes
There are several key quality attributes that correspond to the software architecture of Cheat Engine, like the following:
-
Modularity
The internal design of the project grew over time and was mostly driven by the GUI. As such, a lot of the functionality is heavily tied to the overall design of the GUI and strongly interconnected. This makes it more difficult to make large scale modifications to the codebase or to find the code related to specific functionality. -
Maintainability
The main aspects that determine the maintainability of the project are the aforementioned low modularity of the source code, and the variable quality of the documentation, both of the more general view of the codebase and the exact individual parts. -
Extensibility
The Cheat Engine also provides the users with the ability to write their own plugins and scripts. These can be used to add additional functionality to the program without the need to fully build a custom version. -
Compatibility
The cheat tables generated by Cheat Engine contain enough information to load tables generated by older versions correctly into newer versions of the tool. This is one of the main reasons why compatibility is one of the key quality attributes of Cheat Engine, as well as that it is supported on multiple operating systems. Cheat Engine has general support for Windows and Mac OS applications. If the program detects that the application under inspection runs a specific framework, such as Mono or Direct3D, additional options are presented to the user that simplify interactions with those frameworks.
Roadmap
Although Cheat Engine does not officially have a roadmap, the developers are maintaining and updating new versions to improve it, with the latest version 7.4 being published on January 20, 2022 2. Future updates have not been announced, as the developers have no intentions for great improvements, except for bug fixes and maintainability 3.
A new version can add multiple changes. It can add quality of life changes in the GUI or make shortcuts for easier use. The most common case for a new version is to fix bugs and add new support to stay up-to-date with other applications. In the upcoming years, Cheat Engine will focus more on bug fixing, as the best way to contribute to the project is to point out and fix bugs on their Github page 4. Contributors can also resolve the issues on their Github repository, so the project can be improved in potential future updates.
Ethical considerations
Cheat Engine is specifically made for private and educational purposes only. This does not guarantee that users will stick to their ideals as it is possible to use Cheat Engine unethically. The most common case being used to violate the EULA or TOS of a specific game or application 5. So although Cheat Engine does not support the act of illegal activities, it is still possible to use it in that way.
There have also been controversial topics about Cheat Engine. As mentioned before, the Entertainment Software Association (ESA) sent a copyright infringement to the developers of Cheat Engine 6 in 2017. The ESA made a claim that Cheat Engine allowed users to bypass anti-cheat systems and enable users to gain access to specific items or content which can normally only be bought with real money. The main reason for this copyright infringement claim was the use of the cheat tables. The developers of Cheat Engine came to an agreement with ESA by shutting down the cheat tables to the public, making it more difficult to share cheats in the Cheat Engine community.
The ethical consideration to remove cheat tables from the public did have some consequences for the Cheat Engine community. Because cheat tables have seemingly become harder to access, some users are selling their cheat tables for money. This resulted in a questionably legal marketplace where users sell cheat tables, contrary to the open-source and free nature of Cheat Engine itself.
References
-
Cheat Engine tables. [Online]. Available: https://wiki.cheatengine.org/index.php?title=Cheat_Engine:Cheat_Tables. [Accessed: 07-Mar-2022]. ↩︎
-
Cheat Engine releases. [Online]. Available: https://github.com/cheat-engine/cheat-engine/releases. [Accessed: 07-Mar-2022]. ↩︎
-
Cheat Engine website. [Online]. Available: https://www.cheatengine.org/. [Accessed: 07-Mar-2022]. ↩︎
-
Cheat Engine GitHub page. [Online]. Available: https://github.com/cheat-engine/cheat-engine. [Accessed: 07-Mar-2022]. ↩︎
-
End-user license agreement Wikipedia page [Online]. Available: https://en.wikipedia.org/wiki/End-user_license_agreement. [Accessed: 07-Mar-2022]. ↩︎
-
Cheat Engine copyright infringement [Article]. Available: https://zerolives.com/feature/trgskQ6z/major-video-game-publishers-target-memory-scanner-cheat-engine-with-questionable-copyright-infringement-notices ↩︎