This turtorial will show how to find values and make AoB hacks from them. So let's get started.
Let's start with a simple value like Ammo.
Now that we got our value for Ammo we can search for it in Cheat Engine. Since the value type for ammo could be double, we change the value type to all and click "First Scan"
Now, we'd use some of that ammo so we can search for the new value in Cheat Engine.
Scan for the new value in Cheat Engine, and you should have Way less values.
I have only one value, so that must be the one, but to make sure, I will change the value to 100.
This is the right value since I changed it to 100 and shot once for the value to change, so we found our value.
Next, we right click on the value to and click, "Find what writes to this address." So it can record whatever we do with the value.
Let's shoot some ammo so we can record whatever writes to the address. I shot 5 bullets, so it records the 5 shots.
Next, we click "Show Disassembler" so we can view the bytes and OP codes from the Address we found. It should look like this:
Okay so now, let's scroll up to find anything we could change to make something like "Infinite Ammo" or "Using ammo adds it".
If we just want to freeze the value so it never decreases, we would just nop the main OPcode; so lets copy the bytes first and add them into the value box.
Change the value type to "Array of Bytes" and bold in writable.
Now if you get more than one address, it's fine, let's go back to the disassembler and copy some more bytes up or down (I suggest up, it's much faster). As you can see, I added more bytes to the scan, if we're going up, then the bytes go behind the previous bytes, and vice versa with going down.
Now that we have only one address, let's add it to the addresslist by double-clicking the address.
If you want to make the code so you never lose ammo, we'd NOP the OPcode that was recorded when we shot bullets. NOP just means "Replace with code that does nothing." So if we shoot, the ammo does not change. You can do this by right clicking the code for actions.
So here's what the nopped code would look like
You can also see that the AoB has been changed in the addresslist.
Now the ammo will never deplete unless you reload (Since that's a different code).
Instead of just NOP'ing the code, we can do something cooler like make the ammo add instead of subtract. Let's go back to the disassembler and restore the nopped code with the original code, then scroll up a bit to find more OpCodes and bytes.
I found an OPcode that looks like it could control whether the ammo subtracts or not.
Since it is adding but the ammo subtracts. it would make sense to change add to sub so that the ammo increases instead. Let's change "Addsd" to "Subsd" and see what happens.
I have 94 ammo, so let's see what happens when I shoot ammo now.
I shot 4 bullets and it went up to to 98!
If you want proof this is the case, I originally shot 5 bullets, and I shot four more, so the value should be recorded 9 times:
So now, if we want to make a hack, we'd copy the original AoB, then change it, and copy the changed AoB.
We're not done yet! Now we have to wildcard the bytes that have no spaces in them. Let's go back to the disassembler.
Now let's replace those bytes with ?'s so when an update comes, only the bytes we wildcarded will be changed and not other. Since "Addsd" was changed, we wouldn't wildcard that (Same with the nopped code). Now the codes should look like this.
Now all you have to do is copy these AoB's and submit them for the game.
Congragulations! You made your first Array of Byte hack! Great Job!
PS: Since the AoB's are unwritable, you'd have to use some of that value so it can pop up.