Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Help with connecting the dots with using different technique

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
lockdown
Newbie cheater
Reputation: 0

Joined: 20 Dec 2010
Posts: 12
Location: Anderson, IN

PostPosted: Sun Mar 06, 2011 2:21 pm    Post subject: Help with connecting the dots with using different technique Reply with quote

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
View user's profile Send private message
Geri
Moderator
Reputation: 111

Joined: 05 Feb 2010
Posts: 5627

PostPosted: Sun Mar 06, 2011 3:46 pm    Post subject: Reply with quote

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.

_________________
My trainers can be found here: http://www.szemelyesintegracio.hu/cheats

If you are interested in any of my crappy articles/tutorials about CE and game hacking, you can find them here:
http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles

Don't request cheats or updates.
Back to top
View user's profile Send private message
lockdown
Newbie cheater
Reputation: 0

Joined: 20 Dec 2010
Posts: 12
Location: Anderson, IN

PostPosted: Sun Mar 06, 2011 6:30 pm    Post subject: Reply with quote

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
View user's profile Send private message
Geri
Moderator
Reputation: 111

Joined: 05 Feb 2010
Posts: 5627

PostPosted: Sun Mar 06, 2011 8:22 pm    Post subject: Reply with quote

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.

_________________
My trainers can be found here: http://www.szemelyesintegracio.hu/cheats

If you are interested in any of my crappy articles/tutorials about CE and game hacking, you can find them here:
http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles

Don't request cheats or updates.
Back to top
View user's profile Send private message
lockdown
Newbie cheater
Reputation: 0

Joined: 20 Dec 2010
Posts: 12
Location: Anderson, IN

PostPosted: Tue Mar 08, 2011 10:42 pm    Post subject: Reply with quote

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
View user's profile Send private message
Geri
Moderator
Reputation: 111

Joined: 05 Feb 2010
Posts: 5627

PostPosted: Wed Mar 09, 2011 9:17 am    Post subject: Reply with quote

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.

_________________
My trainers can be found here: http://www.szemelyesintegracio.hu/cheats

If you are interested in any of my crappy articles/tutorials about CE and game hacking, you can find them here:
http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles

Don't request cheats or updates.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites