This button will also have the current version of Cheat Engine listed on it (e. g. , Download Cheat Engine 6. 7). If you’re attempting to use Cheat Engine on a Mac, click the Download Cheat Engine 6. 2 For Mac link instead.

Windows — Double-click the Cheat Engine setup file, click Yes when prompted, click Next, check the “I agree” box and click Next, click Next three more times, uncheck the “I agree to install McAfee WebAdvisor” box and click Next, and click Install. Once setup completes, click Next if prompted, then click Finish. Mac — Double-click the Cheat Engine DMG file, verify the installation if prompted, click and drag the Cheat Engine logo onto the “Applications” folder, and follow any on-screen instructions.

You may have to click Yes or Open before Cheat Engine will open.

You may have to click Yes or Open before Cheat Engine will open.

Remember, this cannot be an online multiplayer or server-based game.

If your game doesn’t appear in the “Processes” list, you cannot edit it in Cheat Engine. You may first have to click the Processes tab at the top of the window.

The number must be on-screen. For example, if you want to change the number of a certain item in your inventory, you would first have to open your inventory to the page on which the item’s number is available.

Don’t pause the game when you do this.

Exact value: Use this scan type if you know the exact number you want to change.
For example, if you know the exact number of lives, or ammo you have, you can select this option.
Unknown initial value: In video games, sometimes a value isn’t represented with a number.
For example, your health may be represented by a health meter instead of a number.
In which case, you don’t have an exact number for how much health you have.
There is a number that represents your health, you just don’t see it on-screen.
In this case, you can select Unknown initial value.
Bigger than.
.
.
:’ Select this option if you don’t know the exact number you’re look for, but you know the smallest possible value.
Smaller than.
.
.
Select this option if you don’t know the exact value, but you know the largest possible value. Value between. . .
This option allows you to enter a range of values to look for.

Bytes: 2 Bytes and 4 Bytes are the data types you’ll be using most often. Most Windows applications use 4 Bytes, so start with that. You can also find these values using 2 Bytes. 1 Bytes and 8 Bytes can work as well, but you may run into problems. Float: Floating point data types are values that have a decimal point in the value (though you may not see the decimal point on-screen in the game). Some times games store values as floating points to prevent simple memory scans. If you’re not able to find the value you are looking for by scanning bytes, try scanning for floating points. Double: Doubles are similar to floating points, but they can contain twice the amount of digits. If you are unable to find a value by scanning for bytes or floats, try scanning for it as a double. All: This option scans all values of all data types. This is a good option if you don’t know what you are searching for, but it will also return more search results that you will need to narrow down.

Bytes: 2 Bytes and 4 Bytes are the data types you’ll be using most often. Most Windows applications use 4 Bytes, so start with that. You can also find these values using 2 Bytes. 1 Bytes and 8 Bytes can work as well, but you may run into problems. Float: Floating point data types are values that have a decimal point in the value (though you may not see the decimal point on-screen in the game). Some times games store values as floating points to prevent simple memory scans. If you’re not able to find the value you are looking for by scanning bytes, try scanning for floating points. Double: Doubles are similar to floating points, but they can contain twice the amount of digits. If you are unable to find a value by scanning for bytes or floats, try scanning for it as a double. All: This option scans all values of all data types. This is a good option if you don’t know what you are searching for, but it will also return more search results that you will need to narrow down.

Unknown initial value: If you selected “Unknown initial value” for your first scan, select Increased value or Decreased value under “Scan type” depending on if the value (or meter) increased or decreased. This will scan for all values that increased or decreased instead of scanning for an exact number.

Unknown initial value: If you selected “Unknown initial value” for your first scan, select Increased value or Decreased value under “Scan type” depending on if the value (or meter) increased or decreased. This will scan for all values that increased or decreased instead of scanning for an exact number.

You should eventually see the previous number you searched for listed in the “Previous” column of each value’s number, while the current value of the item will be in the “Value” column.

To select multiple addresses, you can hold “Shift” and click the top address and the bottom address.

Double-click the number below “Value” in the list at the bottom of Cheat Engine. Enter a new number in the “Value” field. Click Ok.

You may need to change the value one more time before it will update.

If there is more than one item in the list, go ahead and select all of them.

To restore the original code, select the item in the list and clck Show disassembler. Right-click where it says “NOP” and click Restore with original code. If you don’t see this option, click Replace with code that does nothing, click Yes. Then right-click NOP again and select Restore with orignal code.

If there is multiple addresses, open a debugger window for as many addresses as Cheat Engine will allow.

If nothing changes in the debugger window, it is not the correct address. Try a different one.

If the characters have a + and a number at the end (i. e. [ESI+14]). That is an offset number. Write it down. You’ll need it later.

You can also find the address by checking the characters in the bracket, and then checking what number comes after those characters listed at the bottom. For example, if the address has “[rdx]” next to it, look for RDX=xxxxxxxx at the bottom.

Click New Scan. Click the checkbox that says “Hex” next to the “Value” field. Enter the pointer address in the Value field and click First scan.

If the address is listed in green in the scan results. This means it is a static address and probably the pointer you are looking for. In some cases, the pointer you find may also be a pointer. This is called a multilevel pointer. In this case, you’ll need to repeat these steps for each pointer you find in order to find out what the root static pointer address is.

If there is an offset number, enter it in the space above the field where you paste the address. If there is more than one pointer, click Add offset. This will add more offset number boxes above the area where you paste the address. Enter the correct offset number in each box.

In order to inject scripts for different objects, you need to know some assembly code. However, it’s not too hard to create a basic script.

Alternatively, you can right-click each individual address and click Show register states. [2] X Research source

Right-click the selected addresses. Click Open disect data with selected addresses. Click Ok. Enter a name for the data structure and click Ok. Click Yes. Enter a starting size of the struct or leave it as is, and click Ok.

If can’t find a value that is the same for allies, but different for enemies, you can make one. Simply right-click one of the values (such as a pointer), and click Add Element. Select “4 Bytes” as the data type and give it an offset number value that is not taken. Offset numbers are listed to the left in the data dissection structure table.

Click the instruction in the Memory Viewer window. Click Tools in the menu bar at the top. Click Auto Assembler. Click Template in the menu bar at the top. Click Code Injection.

One way to keep things simple is not to add any new labels. Just create a comparison code at the end of “newmen:” to differenciate between allies and foes. Then add a line of code that jumps to the exit if it’s an ally. If it’s an enemy, have it jump to the original code. This will make it so that if the player or an ally is attacked (or fires weapons uses consumables, etc), nothing will change, but if an enemy is attacked, the code will execute as normal.

Value: A value is anything in a computer program that has a numeric value attached to it. It games, it can be your health percentage, the number of ammo you have, or the quantity of an object you have. Cheat Engine allows you to scan for variables and make changes to them. Address: An address is the location the information is stored within the RAM. Sometimes, the location of a value can change. Data Type: A data type is how a value is stored. I can be in bytes (i. e. 2 Bytes, 4 Bytes, or 8 Bytes), it can also be a floating point, or a double. Pointer: A pointer is an address that contains a value that was written to by another address. These addresses can change every time you load a game, or sometime in the middle of a game.

If you are somehow able to use Cheat Engine to obtain resources which are usually purchased with real money, you may be prosecuted for theft. Cheat Engine is a high-profile piece of software, so most games have some form of protection against it.

Many online flash games which don’t have a community link (e. g. , no multiplayer and no high score) are also compatible with Cheat Engine.