How to use multilevel pointers with PointerWrite method?

Hexui Undetected CSGO Cheats PUBG Accounts

ZarrocZuckz

Newbie
Apr 2, 2013
2
282
0
Hey folks,
im new here and new in memory hacking in general.
I just watched fleeps c# trainer creation tut and now i wanted to make my own trainer for Plants vs Zombies but i dont know how to access multilevel pointers with the PointerWrite / PointerRead methods. Would be nice if someone could give me a hint how to do it.

Regards
 

till0sch

Respected Hacker
Dank Tier VIP
Dank Tier Donator
Oct 14, 2012
1,104
12,593
51
Hey folks,
im new here and new in memory hacking in general.
I just watched fleeps c# trainer creation tut and now i wanted to make my own trainer for Plants vs Zombies but i dont know how to access multilevel pointers with the PointerWrite / PointerRead methods. Would be nice if someone could give me a hint how to do it.

Regards
Do you have the Trainer class already? If not, download it from here: https://guidedhacking.com/showthread.php?3165-C-Better-Trainer-Class .

If e.g. your pointer is 0x232131 and your offsets are +0x123 and 0x167:

Trainer.ReadPointerInt32("Your process name", 0x232131, new int[] { 0x123, 0x167 });
 

ZarrocZuckz

Newbie
Apr 2, 2013
2
282
0
I attached a pic of my multilevel pointer, 2262 is my ammo, so 0033D7E8 is my base pointer, right? so i can do it like:

Trainer.ReadPointerInt32("gamename", 0x0033D7E8, new int[] { 0x64, 0x54, 0x4, 0x80 });
right?

multiptr.jpg
 

till0sch

Respected Hacker
Dank Tier VIP
Dank Tier Donator
Oct 14, 2012
1,104
12,593
51
I attached a pic of my multilevel pointer, 2262 is my ammo, so 0033D7E8 is my base pointer, right? so i can do it like:

Trainer.ReadPointerInt32("gamename", 0x0033D7E8, new int[] { 0x64, 0x54, 0x4, 0x80 });
right?

multiptr.jpg

Trainer.ReadPointerInt32(GAMENAME, POINTER, new int[] { OFFSET1, OFFSET2, ... });

EDIT: I can see your attachment now, your code (Trainer.ReadPointerInt32("gamename", 0x0033D7E8, new int[] { 0x64, 0x54, 0x4, 0x80 });) is NEARLY correct. The only mistake you made:
The address isn't obviously 0x0033D7E8, it is obviously .....exe+0x0033D7E8

-> You could:
- if the BaseAddress of the program is 0x00400000 (usual), just edit the pointer to 0x0073D7E8. To check this, go to Cheat Engine -> Memory View -> enter your process name +.exe -> Enter -> right click go to address. If it is 0x400000, everything correct.
- Else, you'll need a procedure that can give you the baseaddress.


If it isn't 0x400000, use this:
Process p = Process.GetProcessesByName("gamename")[0];
int baseaddress = p.MainModule.BaseAddress.ToInt32();

In your read out func use this:
Trainer.ReadPointerInt32("gamename", baseaddress + 0x0033D7E8, new int[] { 0x64, 0x54, 0x4, 0x80 });
 

Attachments

You can download 0 Attachments
Last edited:

Rake

I'm not your friend
Administrator
Jan 21, 2014
13,032
79,068
2,469
The attachments have been approved now. :)
 
Community Mods