Quote:
Originally Posted by csdeathtrap
@sniper01
whats a base pointer?
and how to get it?
sorry for the noobness..:)
thanks
|
How to find base pointer address.
[Only registered and activated users can see links. Click Here To Register...]
Step 6 � Pointers (Password: 098712)
Code:
In the previous step I explained how to use the Code finder to handle changing locations. But that method alone
makes it difficult to find the address to set the values you want.
Thats why there are pointers:
At the bottom you'll find 2 buttons. One will change the value, and the other changes the value AND the location of
the value.
For this step you dont really need to know assembler, but it helps a lot if you do.
First find the address of the value. When you've found it use the function to find out what writes to that address.
Change the value again, and a item will show in the list. Double click that item. (or select and click on more info) and
a new window will open with detailed information on what happened when the instruction ran.
If the assembler instruction doesnt have anything between a '[' and ']' then use another item in the list.
If it does it will say what it think will be the value of the pointer you need.
Go back to the main cheat engine window (you can keep this extra info window open if you want, but if you close it,
remember what is between the [ and ] ) and do a 4 byte scan in hexadecimal for the value the extra info told you.
When done scanning it may return 1 or a few hundred addresses. Most of the time the address you need will be the
smallest one. Now click on manually add and select the pointer checkbox.
The window will change and allows you to type in the address of a pointer and a offset.
Fill in as address the address you just found.
If the assembler instruction has a calculation (e.g: [esi+12]) at the end then type the value in thats at the end. else
leave it 0. If it was a more complicated instruction look at the calculation.
example of a more complicated instruction:
[EAX*2+EDX+00000310] eax=4C and edx=00801234.
In this case EDX would be the value the pointer has, and EAX*2+00000310 the offset, so the offset you'd fill in
would be 2*4C+00000310=3A8. (this is all in hex, use cal.exe from windows in scientific mode to calculate)
Back to the tutorial, click OK and the address will be added, If all went right the address will show P->xxxxxxx, with
xxxxxxx being the address of the value you found. If thats not right, you've done something wrong.
Now, change the value using the pointer you added in 5000 and freeze it. Then click Change pointer, and if all went
right the next button will become visible.
extra:
In this tutorial the value is actually pointed to by a pointer to a pointer, but to finish this tutorial only 1 pointer will be
needed. To find the pointer to this pointer, just search for what changes the value of the pointer.
If you know assembler, you may see something like
mov eax,[ebp-4]
mov eax,[eax+310]
Dont be confused by this. just use the value the extra info window tells you. ebp-4 points to the stack which
contained the pointer to this pointer, but the stack location does change all the time, so dont search for ebp, search
for the value of eax
Pointers are wonderful. They posses great power. They are very useful. Like I said, VERY useful. Pointer is like arrow/line/finger that points specific address�s value. It will point it always, even if value will change its location. Most games now uses values changing addresses, so pointers are really important.
First, scan for value shown on the bottom of tutorial window. If you will find it, find out what writes to it, go to tutorial and change value. Now return to window that appeared after clicking �find out what writes to this address�. There should be some code. Click on it and select �More information� or just double click it. See code with red arrows on its left? If it points to code that�s between [ and ], look what is written under �The value of the pointer needed to find this address is probably� and Remember it. Now go to CE main window, and tick �Hex� box near window where you write value that you want to scan for. If you ticked it, in window next to this box should appear 00000000. Change it with remembered value and click First Scan. It should find one/few addresses. Now, look at left and down. You will see �Add address manually� button. Press it. New window should pop up. In it, tick �Pointer� box. After this, window should get longer. In Address of pointer write address(Address, no value! Address is this one on left, under �Address� label)which you found when you were scanning for hex value. In Offset (hex) write 0(yea, just zero). Click OK. In bottom window you should see new address, like P->xxxxxxxx, and next to it its value. If value is ??, you made something wrong. Here is shorter version for this, if you failed:
1. Find value(this one in tutorial window)
2. Find out what writes to it
3. Change value and double click on just shown code in �Find out what�� window
4. Remember what is written under � The value of the pointer needed to find this address is probably�
5. In Cheat engine tick �Hex� box(it�s under New Scan/First Scan)
6. Write remembered code and scan for it
7. If it found 1 address, remember it. If it found few, correct one is probably this one at the top. NOTE. Remember Address, no value! This is important!
8. Click �Add address manually� button
9. Tick �Pointer� box
10. In Address of pointer write remembered address
11. In Offset(Hex) leave 0
12. Click Ok
13. in bottom window look on new address(it should be P->xxxxxxxx)
14. If its value is ??, repeat step from 1-14
Go to tutorial window and click Change Pointer. Now you have 3 seconds to change our pointer(address with P->xxxxxxxx) to 5000. Don�t worry if you missed. Just once more click Change Pointer and once more try to change it in time. If you will, click Next.