 |
Cheat Engine The Official Site of Cheat Engine
|
| View previous topic :: View next topic |
| Author |
Message |
lockdown Newbie cheater
Reputation: 0
Joined: 20 Dec 2010 Posts: 12 Location: Anderson, IN
|
Posted: Sun Mar 06, 2011 2:21 pm Post subject: Help with connecting the dots with using different technique |
|
|
I have been using CE (cheat engine) for many years now, but never evolved past finding code and changing their value to what I wanted. The only problem is that, for example, a game I play very much I all ways have to find the memory address all over again when I close out the game. I want to learn what fixes this problem and why it does. I am think it is code injection/AA.
I recently started to take steps to progress future into learning how to create trainers/hacking so I do not have to load CE and retake all the steps to finding the new memory address when I close and start the game. The problem that I am having is what I do once I find the base codes; what are my options after that point?
I did the CE tutorials and was able to understand and complete all eight tutorials, but I guess what the tutorials fells to explain in depth is when & why we should use assembly instead of manipulating the base code. How does assembly get past the code changing every time you start and restart the game, or does it?
Here is what I understand:
1. Searching for memory and their values (basic types)
2. When to use unknown initial value
3. Different search scans like floating and double
4. Pointers, trying to find that green ones.
5. Multilevel pointers, still, trying to get to the base/green address.
What I am having trouble with is when to do code injection/AA (auto assembly). I can understand what I am reading, but guess I do not understand when to apply injection and AA, you know?
I have read the in-depth guide to AA and even printed out and read it at least three times, so I get it, but not when and why I should use it instead of just changing the value.
I have had darkbyte help with a few of my noob question threads, and he gave me some AA to apply to a problem I was having, but didn't catch on to as why we were applying/using AA.
Let me explain even more with an actually game I play and have been hacking. Civilization 5 is a great game I play all the time, and that I like to hack or attempt to hack, but like I said above the memory address change when I close the game and bring it back up. Does AA fix this, and how does it fix this? Can this question be broken down for a noob please.
Lastly, am I getting ahead of my self or is AA where I should be focusing on?
|
|
| Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5627
|
Posted: Sun Mar 06, 2011 3:46 pm Post subject: |
|
|
Usually we use AA to get some address from a register and use that address.
For example let's assume there is a code which is reading your health in a game.
mov esi,[eax+20]
In this case, eax+20 = the address of your health. You don't need to find the address yourself as the program will do it. After all that code is working with the health so before it get to this point, it is finding the correct address. All you need to do is come in and take that address. So the point is to not search for the value just let the program find it and while it is working with it, we can also change it. Like putting in an extra line:
mov [eax+20],#100
Which would change your health to 100, wherever it is. In English, you write:
change health to 100 (where you use mov to change the value of health to the value that you want to use).
In this case you don't need to do anything just activate your script and the program will execute
mov esi,[eax+20] as usual and it will also execute your code to change it to 100 too. So every time when this code is running, your health will be changed to 100 whatever is the address.
Complications will start when you find a code which is accessing to more addresses. I don't recommend to start practicing on Civ5 immediately because it's codes are shared and if you activate a simple script which is changing the gold for example, it will change it for the enemy too as the same code is used to handle your gold and the enemy's gold.
The best way is to find some code which is accessing to one address only which is important for you. If you cannot find any, it will be more complicated and you need to write a more complex script for it to somehow check which address is your gold and which is for the enemy etc. More complex codes will require more complex modifications to do what you wish.
_________________
|
|
| Back to top |
|
 |
lockdown Newbie cheater
Reputation: 0
Joined: 20 Dec 2010 Posts: 12 Location: Anderson, IN
|
Posted: Sun Mar 06, 2011 6:30 pm Post subject: |
|
|
| Geri wrote: | Usually we use AA to get some address from a register and use that address.
For example let's assume there is a code which is reading your health in a game.
mov esi,[eax+20]
In this case, eax+20 = the address of your health. You don't need to find the address yourself as the program will do it. After all that code is working with the health so before it get to this point, it is finding the correct address. All you need to do is come in and take that address. So the point is to not search for the value just let the program find it and while it is working with it, we can also change it. Like putting in an extra line:
mov [eax+20],#100
Which would change your health to 100, wherever it is. In English, you write:
change health to 100 (where you use mov to change the value of health to the value that you want to use).
In this case you don't need to do anything just activate your script and the program will execute
mov esi,[eax+20] as usual and it will also execute your code to change it to 100 too. So every time when this code is running, your health will be changed to 100 whatever is the address.
Complications will start when you find a code which is accessing to more addresses. I don't recommend to start practicing on Civ5 immediately because it's codes are shared and if you activate a simple script which is changing the gold for example, it will change it for the enemy too as the same code is used to handle your gold and the enemy's gold.
The best way is to find some code which is accessing to one address only which is important for you. If you cannot find any, it will be more complicated and you need to write a more complex script for it to somehow check which address is your gold and which is for the enemy etc. More complex codes will require more complex modifications to do what you wish. |
Thank you for a nice reply. So your saying that the program we write in AA for any game can actually find the same memory codes that I spend an insane amount of time on; and then can automatically apply those memory address into the program/script, and the hack would be working? If so, I can understand now how people can do cooler things then I could, because there are all ways some things I couldn't ever find doing the traditional scan methods.
Here is some AA that darkbyte gave me for civ 5; if you don't mind could you try to break this down, or at least explain how it work, and I could do the rest?
| Quote: | The following script when enabled will give you the techpointer
Code:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
alloc(techpointerlist,4)
registersymbol(techpointerlist)
newmem:
mov [techpointerlist],eax
ret
CvTeam::GetTeamTechs+6:
jmp newmem
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
unregistersymbol(techpointerlist)
dealloc(techpointerlist)
dealloc(newmem)
CvTeam::GetTeamTechs+6:
ret
int 3
int 3
int 3
int 3
//Alt: db C3 CC CC CC CC
when enabled(touch something related to tech first, e.g the tech list) your own technology will be at [[techpointerlist]+4]+0
and your progress into each tech will be at [[techpointerlist]+c]+0
the first computer player will have it's technology at [[techpointerlist]+64]+0 and it's progress at [[techpointerlist]+6c]+0
from there use the memory browser and just scroll the memory around it. (I couldn't make a table because it's not always the same, you'll have to use the memory browser to verify)
P.s: It's really fun to set a comp back to the stoneage
|
|
|
| Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5627
|
Posted: Sun Mar 06, 2011 8:22 pm Post subject: |
|
|
| Quote: | | So your saying that the program we write in AA for any game can actually find the same memory codes that I spend an insane amount of time on |
First you need to find a code which is part of the program and then you can use code injection to "insert" your own code into it. You can do this by making a jump (or call) to a location that you use for your code and then jump back to the place where you have came from. This way the code will be executed in this order:
original codes
...
...
jump to your code
execute your code
jump back to the same location
execute the original codes after your script
...
...
So this is basically like "inserting" codes into the program and if you don't count the jumps, it looks like
original code
...
your script
original code after your script
...
...
If your write an AA script, you manipulate the original programming itself. Depending on your skills, you can make tons of features/cheats. The easiest is if you have a code which is accessing to your value, you just put in an extra line to change the value to a desired amount and when the value (like health, gold, whatever) is used by the program, it will also set to the amount that you need. This way you don't even have to know what is the address. All you need to know where is the program using it and how can you change the program to modify your value as you want.
The code that DarkByte has made is getting the address of your techpoints from a code which is accessing to it and saving it on an allocated address which is called "techpointerlist".
You can also make a cheat another way if you find the code which is accessing to the techpoints when you open the technology tree for example, and you put in an extra code to change the technology points when they are loaded. Try to run the game in window, find a techpoint for something, click on "find out what is accessing to this address" and while you play the game and open panels etc, you will see what codes are running in the background that are messing with your techpoints.
_________________
|
|
| Back to top |
|
 |
lockdown Newbie cheater
Reputation: 0
Joined: 20 Dec 2010 Posts: 12 Location: Anderson, IN
|
Posted: Tue Mar 08, 2011 10:42 pm Post subject: |
|
|
Hi Geri - Thank you for all of your help. I feel I am getting closer to understanding AA but still need that little push. Let me write the steps I take to apply the the AA script from darkbyte. Now the script show point/find the technology memory address for me to, so I can build a hack around it, correct?
Here are the steps:
1. Setup up game to duel mode against AI
2. Start Cheat Engine 6.0
3. Select process
4. Click on memory view
5. Hit, Ctrl + A or Tools > Auto Assemble
6. Hit Ctrl + v or right click & paste the script
7. Hit Execute
8. Write down the memory address to the techpointerlist which is always around 08E30800
9. Go back to Cheat Engine 6.0 main screen and click on Add address manually (so I can view memory region & and do below).
10. Right click on the added memory address and choose "Find out what access this address".
11. Go back to game switch from a technology to another, do that and I get 717 count in the "Find out what access this address" window.
12. I double click on what I found, and the suggested hex address to find is 000000 and the value in [ ... ] is "techpointerlist
Have I done something wrong and what does step 11 - 12 mean? I thought I would find some address for the technology there or by click memory region for that memory address (08E30800). Thanks for the help.
|
|
| Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5627
|
Posted: Wed Mar 09, 2011 9:17 am Post subject: |
|
|
If you are not familiar with pointers, it is easier to find the addresses this way:
1. Find your tech points for a research.
2. Click on "find out what is accessing to this address".
3. Open the technology tree in the game.
4. Save the addresses that you have found.
5. Right-click on one of the codes that you have found and choose what addresses are read by that code.
6. Open the technology tree in the game.
7. You should see all of the addresses for your tech points now.
_________________
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|