 |
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
ImNewHere Cheater
Reputation: 0
Joined: 09 Sep 2010 Posts: 28
|
Posted: Fri Sep 10, 2010 8:59 am Post subject: Question About Cheats (Value) |
|
|
Hello there
As you can see, Im new here and also on the cheat engine business,
And I must say: this is really fun !
I made some cheats for a little game, And I made a trainer with the: "What Writes To This Address", which means the cheats will work if the address changed. (Right?)
The cheats actually works for me, the address didnt change or something.
But.. when I use the cheats on the trainer, its just freeze the ammount... I want to change the Value. How can I set the value to the ammount I want?
Currect me if I wrong.. this is the pointer?
Cus I was trying the 7th part on Cheat Engine Tutorial and I just dont get it! please help
I want for example, if I have 45 bullets, to click F1 and I have 999 bullets (Also unlimited ammo of bullets + address didnt change).
How do I do that? can someone teach me please? I really must it ^^^^^^.
I have email / messenger / PM or even here.. just help!
I want to set Value for the bullets, health, energy, etc...
And my second question:
How can I make God Mode hack for games? (SP games, little games).
Thank you very much for help!!!!!!!!!!
|
|
Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5636
|
Posted: Fri Sep 10, 2010 10:50 am Post subject: |
|
|
If You have the code which is writing to the address, You can change it with code injection easily.
Your code contains some register between [ and ] marks. Eg.
mov [eax+44],ecx
You just need to add one more line to Your code with code injection to change the value between the [] marks, like this:
mov [eax+44],64
This will freeze Your ammo to 100 (100 = 64 in hex).
If You want to make an option to be able to change the value as You wish without modifying the script, You can save it on an address and add the address to the table.
_________________
|
|
Back to top |
|
 |
ImNewHere Cheater
Reputation: 0
Joined: 09 Sep 2010 Posts: 28
|
Posted: Fri Sep 10, 2010 11:17 am Post subject: |
|
|
I dont get it... look, for example I have this code:
h t t p : / / u f u . c o . i l / f i l e s / f 5 x i d z l 1 x 7 q k 8 q 1 y f 3 w x . p n g
(This is an image.. ^^ sry but I can post links yet O_o)
Now what should I do?
Im sorry but I nubish.. new on the cheats business...
Can you tell me what should I do step by step?
Pleaseee I must it
Thanks
|
|
Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5636
|
Posted: Fri Sep 10, 2010 11:43 am Post subject: |
|
|
Use code injection and modify the code like this to freeze the value to 100:
Code: | newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov [esi+4c],64
originalcode:
//mov [esi+4c],eax |
If there is another code too in the "originalcode" part below mov [esi+4c],eax , than leave that code unchanged.
If You still dont know how to use code injection, check out the tutorial video here to see it and try it out in the CE tutorial:
http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles
_________________
|
|
Back to top |
|
 |
ImNewHere Cheater
Reputation: 0
Joined: 09 Sep 2010 Posts: 28
|
Posted: Fri Sep 10, 2010 12:07 pm Post subject: |
|
|
EDIT: Ok, I got help from tutorial on youtube about step 7 (Code injection) on the cheat engine tutorial and I did it.
But I have another question: I saw that he used add [ebx+30100],2 (or something like that), but my point its over the ,2. Why did he used the number 2 to pass the 8th part? If I want 9 lives in a game, what number should I use? and when should I use MOV or ADD or something else? Im confused
|
|
Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5636
|
Posted: Fri Sep 10, 2010 12:22 pm Post subject: |
|
|
1. Right-click on the code that You have found.
2. Choose "Open the disassembler at this location".
3. In the Tools menu, choose "Auto-assemble".
4. You will see a new window with Auto-assemble name.
5. Go to Template and press "Cheat table framework code".
6. Then go to Template again and press "Code injection" and then "Ok".
7. Now You see a script which has been generated by CE. Search for this part:
Code: | newmem: //this is allocated memory, you have read,write,execute access
//place your code here
originalcode:
mov [esi+4c],eax |
8. If You have found it, change it to look like this (add the code line I have written below the "place Your code here" text and add // before the original code in the "originalcode" section)
Code: | newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov [esi+4c],64
originalcode:
//mov [esi+4c],eax |
9. If You have changed the code exactly as I have written, choose File->Assign to current cheat table.
10. Now You have a new cheat option in Your table and You can turn it on and off. If You turn it on, You should have 100 ammo or whatever the code is changing.
If You follow these steps exactly, it will work. And as I have said, there is a tutorial video on the site I have linked about code injection so You can see how it works if You get lost in the menus or something.
On this page:
http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles/98-tutorial-videos-for-cheat-engine
Check out the video for "Tutorial Step 7: Code Injection". You need to do exactly the same way as You see on the video except You have another code.
EDIT:
Quote: | But I have another question: I saw that he used add [ebx+30100],2 (or something like that), but my point its over the ,2. Why did he used the number 2 to pass the 8th part? If I want 9 lives in a game, what number should I use? and when should I use MOV or ADD or something else? |
In the tutorial, Your task is to modify the code which is decreasing the value by one to a code which is increasing the value by 2.
add [ebx+30100],2 is increasing the value ( [ebx+30100] ) with 2.
mov is copying the second operand to the first, so
mov [ebx+30100],2 means change [ebx+30100] to 2.
So if You want to write a script where Your ammo is increasing with 2 with every shot, You use "ADD". If You want to write a script where Your ammo is freezed to 2, then You use "MOV".
If mov [esi+4c],eax is a code which is changing Your life, You need to change to mov [esi+4c],9 to freeze it to 9 health.
You can find some useful instructions that I have gathered together here:
http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles/87-basic-assembly-instructions-opcodes-and-examples
_________________
|
|
Back to top |
|
 |
ImNewHere Cheater
Reputation: 0
Joined: 09 Sep 2010 Posts: 28
|
Posted: Fri Sep 10, 2010 4:07 pm Post subject: |
|
|
Wow wow wowwwwww!! Thanks you so much dude!!!
Ok... I did what you said and at the end of this I saw on my Cheat table: Auto Assamble Cheat.
Now, how can I add it to the code window? (Where I making a trainer)? the new code I just did...?
Thank you so muchhhhhhhhhhhhh!!!!! 
|
|
Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5636
|
Posted: Fri Sep 10, 2010 4:41 pm Post subject: |
|
|
Quote: | Ok... I did what you said and at the end of this I saw on my Cheat table: Auto Assamble Cheat.
Now, how can I add it to the code window? (Where I making a trainer)? the new code I just did...? |
The "auto assemble cheat" is the code what You did, it is just named "auto assemble cheat" by default, but You can give a name for Your script like "god mode", "unlimited ammo", "whatever" just double-click on its name and change it.
Enable/disable the script by clicking on the checkbox (like when You freeze a value on an address).
If You have done it, You can create a trainer with CE and set a hotkey for Your scripts, just like You set hotkeys for addresses.
_________________
|
|
Back to top |
|
 |
ImNewHere Cheater
Reputation: 0
Joined: 09 Sep 2010 Posts: 28
|
Posted: Sat Sep 11, 2010 3:13 am Post subject: |
|
|
Ok Thank you so much for your help.. im really appreciate it !!!
But I have another 2 question and I think that's gonna be my last questiona
Ok..
1. If I just found an address and did Code finder (What writes) and I replaced this code with the code does nothing, and I made a trainer with the code and it works for me... it will work to everyone? (Not the code injection, only code finder, that freeze).
2. if I did code finder to freeze the address and if I did code injection to change the value of somthing, do I need to do pointers? what for? and when?
Thank you so muchhhh!
|
|
Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5636
|
Posted: Sat Sep 11, 2010 6:34 am Post subject: |
|
|
Quote: | 1. If I just found an address and did Code finder (What writes) and I replaced this code with the code does nothing, and I made a trainer with the code and it works for me... it will work to everyone? (Not the code injection, only code finder, that freeze). |
In most cases, these codes are static, which means if they use the same version of the game, it will work. The same applies for a simple code injection. So it is almost always working for normal games. But don't really useful on flash games.
Quote: | 2. if I did code finder to freeze the address and if I did code injection to change the value of somthing, do I need to do pointers? what for? and when? |
If You were able to change the value with code injection, You don't need pointers. But imagine a situation where in an FPS game, one code is used to change everyone's health. Then if You nop it, everyone will be in god mode. If You change the value so simply as You did here, everyone's health will be freezed. Of course, this situation can be handled with code injection more efficiently but then You need to write a bit more difficult code. If You don't want to learn the asm language, then in this cases You will have to use pointers to be able to change Your health only.
Btw. if You have gone this far, there are 2 options in CE when You right-click on an address:
Find out what writes to this address
Find out what accesses this address
You know the first one, but probably You did not check the other one. There are codes to write to addresses and there are codes to read the value from the addresses too. If You use "find out what accesses this address", You will have much more results. If a value is displayed on Your screen, like Your health etc, then in most cases there is a code to read Your health value and then do stuff to display it for You.
This is useful in many cases, because lets say that Your code is changing health for You and the enemy too. You find out what writes to this address:
changing this code or simple code injection = god mode for everyone
Code: | newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov [esi+4c],64 //change [esi+4c] (which is the health) to 100
originalcode:
//mov [esi+4c],eax |
You find another code which is accessing to Your health, reading it to display Your health on the screen:
1. code to read Your health ONLY
2. do other stuff to display it on the screen.
In this case, if You change the code to another code which does nothing (change it to NOP's), You will not be in god mode. The maximum You can achieve that Your health will not be displayed on the screen. However let's say You use code injection on this address.
for example the code which is reading Your health looks like this:
mov ecx,[esi+4c]
The difference:
mov [esi+4c],eax //writing eax to Your health
mov ecx,[esi+4c] //writing Your health to ecx or in other words "reading" Your health
So if You check out what addresses this code accesses and it is reading only Your health, You can simplay change Your health with code injection at this point like this:
Code: | newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov ecx,[esi+4c]
mov [esi+4c],64 //change [esi+4c] (which is Your health) to 100
originalcode:
//mov ecx,[esi+4c] |
As You can see the method is the same, but in this case, only Your health will be changed, so it will be a god mode only for You, and not for the enemy. This method is working in many games and it is much better than using pointers.
However if You don't want to use code injections at all, just stick to pointers, but sometimes finding the right pointers is more difficult than find a code which is reading the value that You need and change.
Here is a part of the my article about this ( http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles/87-basic-assembly-instructions-opcodes-and-examples )
Quote: | Another good example: Unlimited money for the player only in C&C Generals.
It is pretty easy to find the code which is changing the money for the players in Generals, but if You wish to make script that will give You unlimited money for You only, here is a simple hint which is working with most of the games.
When the game is working with the money, it is using different addresses to store Your money and the amount of money that is displayed on Your screen. This means that when You search for money, You will find 2 addresses.
1. The money that You actually have.
2. The amount that You see on the screen in the game.
The game is checking Your money about 10 times in a second and display the correct amount to Your gameplay screen.
1. You have an address where Your money is stored.
2. A code is reading how much money You have on that address.
3. A script is copying the value of the money to the address where You can see the displayed amount of money.
Why is that important?
It is important because only the player's money is displayed on the screen, so the code which is reading how much money do You have in the 2nd step is accessing to Your money only. If You have the code which is accessing to Your money only, You can easily write a script to change Your money, but not for the enemies.
How to find that code?
It is simple. Find the address where Your money is stored, but after that, You need to choose "Find out what accesses this address". You will get the code which is reading from the address, not just the one which is writing to it.
The code which is reading the amount of Your money is:
mov ebx,[eax+38]
Now all You need to do is write a script which is changing Your money when the program
is reading it:
mov ebx,[eax+38] //read Your money
mov [eax+38],000f423f //change Your money to 999999 (which is 000f423f in hex) |
If You think this method is working for old games only because Generals is and old game, You are wrong. I have just used the same method yesterday to make a money cheat for R.U.S.E. exactly the same way as here.
And I used this method to make god mode for Left 4 Dead 2 and many other games.
So if You get used to it, this method is pretty useful.
1. Find codes that are accessing to Your value.
2. Check out the codes to see if there is at least one of them which is accessing to Your value only.
3. Use code injection to change Your value.
_________________
|
|
Back to top |
|
 |
ImNewHere Cheater
Reputation: 0
Joined: 09 Sep 2010 Posts: 28
|
Posted: Sat Sep 11, 2010 7:49 am Post subject: |
|
|
Ok, thanks a lot again
I did it and it works for me! when I click F1 the value change to the value I set and freeze it !
But last last problem:
After I did the Auto Assamble Cheat and after I set a hotkey.. I dont know how to move it to the code list:
h t t p : / / up203.siz.co.il/up3/igim11jmmogw.png
i have only one code in the codelist the freeze the address but not change the value.
How can I move this code to the codelist?
Second question:
How can I know what is the value to set?
Example: 104 = 260... how can I know? :S
Thx!!!
|
|
Back to top |
|
 |
Geri Moderator
Reputation: 111
Joined: 05 Feb 2010 Posts: 5636
|
Posted: Sat Sep 11, 2010 9:28 am Post subject: |
|
|
In the script, You use hexadecimal values:
http://en.wikipedia.org/wiki/Hexadecimal
You can use the Windows calculator to change values from decimal to hex or from hex to decimal.
104 in hex = 260 in decimal
You can't add a script to the codelist, You can add codes only. Scripts are stored in the cheat table and single codes are stored in the code list.
If You want to add the script to a trainer, You need to do it the same way as You would do with an address.
_________________
|
|
Back to top |
|
 |
ImNewHere Cheater
Reputation: 0
Joined: 09 Sep 2010 Posts: 28
|
Posted: Sat Sep 11, 2010 9:58 am Post subject: |
|
|
EDIT: thanks a lotttttttt!!!
Dude, thanks a lot for your help... you dont know how much you helped me!
Thanks you so so so much!!!
I'll glad to get your icq number / messenger address to talk (if you want of course).. you can PM me
|
|
Back to top |
|
 |
Freiza Grandmaster Cheater
Reputation: 22
Joined: 28 Jun 2010 Posts: 662
|
|
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
|
|