u should read the 1st lesson before u go on with this :
i will assume that u know that the program runs as assembly language and converted to binary using assembler.. binary is the (010101010101...etc ).
the computer reads the 01010..... and executes the proper instructions to do the operation.
for this lesson i will show u how to find the assembly code which effects the value that we want to change.
why do we need to find the assembly code ?
simple : some games changes the address of the value each time it executes, and modifying the assembly code that affects the value will lead us to not search for the address anymore !
address 0045003c value 100
2nd execution of the game
address 007AB302 value 100
the 3rd time u execute it will be something else, do u have to find it each time the game loads ?
for the address above i will assume that i found the assembly code "that decreases the value" of the health when i get hit, as if some attacked me, my hp went to 90.
the assembly code was " EXAMPLE : sub [esi+04],eci ".
for those of u who doesnt know what is this, this is an assembly code that subtacts eci from [esi+04]
we can make it " NOP" which is no operation, so it doesnt decrease.
what are esi and eci ? esi and eci are registers, containing the needed values.
what are esi and eci ? esi and eci are registers, containing the needed values.
after the long intro, LETS START !!
i will run "call of duty 2" and im going to use the ammo as an example, u can run other games, EX : Pinball ! make the value NOT increase just to see that u can do it :)
1.find the effective adress, when i tried to find the address of the ammo value i got this :
each time i change the value they do not change to the same value, so the simplist way is to try changing one by one, the effective address will change all the values, for me it was 01C557C4.2.right click on the address in the adress table and choose "Find out whats write to this address".
do the same if u r trying it on other game. EX : Pinball.
3. a window will popup.

4.Decrease the value ! remember to do what u want to change.
so if u want the value NOT to increase then increase it, if u want it NOT to decrease then decrease it.... this way we can detect the assembly code which does the job.
for Pinball "you want it NOT to increase the score, go back to the game and increase the score, pause it and get back to cheat engine".
5. somthing like this will show up, depend on the action u took, for me, i fired a bullet so the value decreased . for PinBall it will show something else.

if u noticed : dec [esi+ea....etc , the DEC is short for decrement, since each time i fire a bullet will decrease the value by 1.
6. Press the botton "Replace" a window will apear, click OK.

7.go back to the game and try to change the way u dont want it to do.
i fired a bullet and the bullet count didnt go down :D
here is what i got :
DONE !!! for this lesson, next lesson i will show u how to use the assembly code we found so we dont have to look for the address anymore, and create a program that do the NOPing :)
4 comments:
I tried it on Pinball...since I don't have "Call of Duty",
Actually the idea still not that clear,but after step#6 I got back to the game...what ever I played the score still freezing!!
but why do we go the opposite way?
"so if u want the value NOT to increase then increase it, if u want it NOT to decrease then decrease it.... ",the expression was 'add'[eax]...for me,
According to what we can know the effective address? ...it was "01C557C4" for you,although there is about another 8 addresses!
Next lesson seems to be more intersting since we r gonna use Assembly codes,without checking the addresses,
Typo :P
i fixed it !
???
Typo about(incrasing ,decreasing)!!!
BTW:Where is the Answer (!_!),
this is just the concept, u said u edited the increasing, i will put a video example i think, if i have time :P
Post a Comment