Friday, January 24, 2014

Game Cheat Engine Overview (Part 1)

Yes, it's true. There is a software program that can be used to cheat when you play a game. My guess is that die-hard gamers would never use such a tool. But for people, like me, who love software and like to explore you will likely find this little tool a bit interesting.

A cheat engine is a software app that lets you change values assigned to a variable in a game. (Note that a variable is a named storage location in the computer's memory. The storage location holds the value that might be a number, a text string or some other data type. The variable provides the developer a way not only to store; but also to retrieve and manipulate values. For example, a game might give a new player 3 lives. And each time the player get's shot "x" number of times (where x can be any number), the player looses a life. In this example the number of lives is stored in a variable. And, as an incident occurs that results in the value changing (i.e., the player looses a life) the value is updated.

The Cheat Engine provides a way for users to locate the value in memory and change it. For example, if a player wants to change the number of lives from 3 to 10--the Cheat Engine could be used to accomplish this task. The following paragraphs provide additional information on various ways Cheat Engines might locate a variable's value and change it.

Downloading the Game Engine


I downloaded Cheat Engine 6.3 from www.downloads.com. But it can also be downloaded from http://www.cheatengine.org/.

Download Engine Page

Note:  If you are not familiar with www.downloads.com; it's probably not the best place to download the Engine. This is because downloads.com adds a lot of unwanted software to downloads. If you are familiar with downloads.com you probably have already figured out how to duck and dodge your way to an executable that includes only the product you want to install.

Installing the Cheat Engine


The Cheat Engine is pretty straight forward to install. However just be aware that when you come to the "Improve Your Internet Protection" screen you can select "Custom Installation" (even though it "appears" to be disabled) if you do not want to install the AVG tool bar or the Outfox.tv application.

Custom Installation Image

Once you select Custom Installation, from "Improve Your Internet Protection" screen, you can deselect the AVG options if desired, as shown below.

Custom Installation Image With AVG Options Deselected

When you click "Next" install wizard recommends the Express installation.You can click Custom Installation if you want to deselect the "Install Outfox.TV" option.

Express (Recommended) Option Selected Image

You can then continue to use the Setup wizard until the Cheat Engine is installed. Once it is installed an Information window displays. When you click Next a dialog pops up and asks "Do you want to try out the tutorial?" If you click yes, the Tutorial application launches. Note that the Tutorial application is a separate app from the Cheat Engine app. Both apps are shown in the following picture.


When you click the Next button on the Cheat Engine Tutorial app you are presented with the first objective in the tutorial. You must click the "Hit me" button on the lower left bottom portion of Cheat Engine Tutorial app. Doing this changes the "Health" variable's value.


 Changing a Known Value


In this example, you know the value of the variable. For example, if you start a game with 250 rounds of ammunition; you know the value--but you don't know the address of the value (i.e., where in memory the value is located). As shown in the following picture I clicked the "Hit me" button until the Health value changed from 100 to 73. The Next button, on the Tutorial app, will remain disabled until I locate the Health variable and change its' value back to 100. To begin I have to use the Cheat Engine app to open the Tutorial executable file (i.e., Tutorial-i386.exe). To open the .exe file I use the "Select a process to open" button, outlined using a red box in the picture below.


When the Process List window opens I can select the Tutorial executable (highlighted in the picture below) and click the Open button.


The Cheat Engine opens the executable file and populates the Engine with the Start and Stop scan ranges and other values. There are three values that are primarily used for the Scan as follows:  "Value", "Scan Type" and "Value Type". The "Value" field holds the value of the variable. The Scan Type indicates the type of scan that will be used to locate the value. And the Value Type, which is the same as a data type.



Note: If you are not familiar with Data Types (referred to as "Value Type" in the Cheat Engine) Microsoft has an older reference for C# that provides a brief and basic example of data types. This might help clarify how one data type differs from another: http://msdn.microsoft.com/en-us/library/cs7y5x0x%28v=vs.90%29.aspx

In the Value field, shown in the above picture, I entered 73, which is the current "Health" value based on the number of times I clicked the "Hit me" button. Since I am searching for the exact value "73" I leave the Scan Type value set to "Exact Value". Also the "Value Type" is set to 4 Bytes, which is feasible to search for the numeric value 73.


When I click the First Scan button a list of values display in the left side of the window. This means more than one variable's value is currently set to 73. So I need to isolate the variable specific to the "Health" value.


To do this I will need to click the "Hit me" button. Clicking the button changed the Health value to 71. I enter 71 in the value field and then click Next Scan. The Cheat Engine rescans the variables already presented and searches for the variable whose value is now 71. As shown in the following picture, only one variable has a value of 71. So I know this is the Health variable.


I can either double-click the address value; OR, right click it. If I right-click the value a popup window displays. I can then select "Add selected addresses to the addresslist", as shown below.


Whether I double-click the address value or use the popup window, the address is moved to the bottom portion of the window, as shown below.


Right-click the value in the bottom window. The popup menu displays. Select Change record -> Value, as shown below.


The Change Value window displays. I can now change the Health Value from 71 to 1000 and click OK to close the Change Value window


The Next button is now enabled, which signifies that I have performed the step properly and can move on to the next step.


The following objectives show how to locate a variable whose address changes, how to use pointers and more. If there is enough interest in this topic I will post the information for the remaining steps associated with the Cheat Engine tutorial.