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 


Pointer Issue

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
VysseEnzo
How do I cheat?
Reputation: 0

Joined: 08 May 2015
Posts: 5

PostPosted: Sat Dec 12, 2015 2:50 am    Post subject: Pointer Issue Reply with quote

I am unsure the exact rules regarding online games and couldn't find anything but I seem to remember that saying the game name is not allowed. So I will not say what I don't have to.

So I am wanting to make a program that reminds me when something is off cooldown that prevents me from losing an item upon death in a certain game. I was able to find the value and pointer of the cooldown on a character. The next obvious test was to see if it would pop up on another character. It did not work on another character. What at this point could I do to make it work for multiple characters? Should I redo my pointer scan and switch between the two characters and see if they have a related pointer? Any advice would be helpful. If it's allowed and someone asks I am willing to give more info including the game name. Thanks Very Happy.
Back to top
View user's profile Send private message
grtnd
Newbie cheater
Reputation: 0

Joined: 29 Nov 2015
Posts: 14

PostPosted: Sat Dec 12, 2015 4:43 am    Post subject: Reply with quote

check what instruction writes to your pointer/value, the probable thing is that the instruction itself writes this value to all characters using different offsets
Back to top
View user's profile Send private message
VysseEnzo
How do I cheat?
Reputation: 0

Joined: 08 May 2015
Posts: 5

PostPosted: Sat Dec 12, 2015 6:11 am    Post subject: Reply with quote

grtnd wrote:
check what instruction writes to your pointer/value, the probable thing is that the instruction itself writes this value to all characters using different offsets


And what would I do from there? Is there a guide I could follow?
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4715

PostPosted: Sat Dec 12, 2015 9:24 am    Post subject: Reply with quote

No, you shouldn't mention the game's name.

Doing that with the pointerscanner could help, but it also might not result in any pointers that are consistent between game restarts. If that's the case, then injecting some memory that will copy the address of the current character would probably work, depending on what instructions access the address.

Check what instructions write to the address of your value (not the address of the pointer, but the address pointed at by the pointer). Then, play around in the game a bit, and see what instructions pop up, when they pop up, and how often they pop up. If you can't find any good instructions that write to it, try searching more generally for instructions that access it, following the same steps.

Starting at the most commonly run instructions, click on "show disassembler", right click on that instruction in the disassembler, and select "Find out what addresses this instruction accesses". Test it in game (e.g. switch characters or something), and if it accesses the new character, then you can do an AoB injection on that instruction and do whatever you want with it.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
VysseEnzo
How do I cheat?
Reputation: 0

Joined: 08 May 2015
Posts: 5

PostPosted: Sat Dec 12, 2015 9:41 am    Post subject: Reply with quote

ParkourPenguin wrote:
No, you shouldn't mention the game's name.

Doing that with the pointerscanner could help, but it also might not result in any pointers that are consistent between game restarts. If that's the case, then injecting some memory that will copy the address of the current character would probably work, depending on what instructions access the address.

Check what instructions write to the address of your value (not the address of the pointer, but the address pointed at by the pointer). Then, play around in the game a bit, and see what instructions pop up, when they pop up, and how often they pop up. If you can't find any good instructions that write to it, try searching more generally for instructions that access it, following the same steps.

Starting at the most commonly run instructions, click on "show disassembler", right click on that instruction in the disassembler, and select "Find out what addresses this instruction accesses". Test it in game (e.g. switch characters or something), and if it accesses the new character, then you can do an AoB injection on that instruction and do whatever you want with it.


I actually found a great tutorial that went over three methods for finding addresses that change. The first method was pointers which won't work here. The second method was AOB injection which from what I can see there are too many addresses that are accessed so that won't work. The final method that I haven't tested yet is finding it by a signature. This should work but brings up another issue. I need to do this in VB.Net because essentially I want a program that pops up with a notification when this cooldown is almost done. Now I've found a way to scan for a signature of bytes but not one that allows me to have wildcards. I'm out atm so can't do much and may not even need wildcard support and if I do I think I know what I can do but just in case does anyone know of a tutorial that covers this or a snippet? If not I think I can figure it out and thanks for the advice so far.
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4715

PostPosted: Sat Dec 12, 2015 9:55 am    Post subject: Reply with quote

I don't think you understand what an AoB injection is.

The difference between an AoB injection and a code injection is that a code injection uses a constant address as a location to override code for a jump to your newly allocated memory. An AoB injection scans for that code using a signature, so that it can replace it with a jump to your memory. The signature is a part of the AoB scan.

If you mean to use a signature to find whatever structure that address is a part of, then I really wouldn't rely on that if I were you, since most of the values could change randomly. That would be harder than finding a good pointer to the address.

Regardless, If you're sure that all the instructions that access that address access other addresses, then there isn't much that you can do with those instructions directly. You can try finding what instructions access a pointer to that address (doesn't have to be a static pointer), and do an AoB injection on one of those that'll traverse the pointer path and copy the end address.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Studio80
Advanced Cheater
Reputation: 2

Joined: 12 Sep 2012
Posts: 83

PostPosted: Sun Dec 13, 2015 5:27 pm    Post subject: Reply with quote

Just play with the last offset of the pointer. There is a chance you will find other options. This works for many strategy games. Or you can use the offset of the pointer until you reach the adres of the other character. It's going to save you a lot of time!

Just an example of what I mean.

Lets say the value is stored in: 02C45560

And this is the pointer:
Code:
Game.exe+04CF078  547 4CF 7C 4 Points to: 02C45560


Lets say that the second value is stored in: 02C45000

Just add the pointer to the list and double click on it. When you do an other window will open and you will see the offsets. Every time you change the offset the adres will change. Start with the first one on top until you reach the adres of the second value.

I used this method many times and its going to save you a lot of time and you will know for sure that you're using the correct pointer.

You mentioned that it's an online game. Many online games store their game stats on servers, this might be your case. You're only changing the numbers on your screen which is locally but not on the server. That means that you can't make a trainer for this game unless you could bypass their protection which is hacking in their system LOL
Back to top
View user's profile Send private message
VysseEnzo
How do I cheat?
Reputation: 0

Joined: 08 May 2015
Posts: 5

PostPosted: Sun Dec 13, 2015 6:34 pm    Post subject: Reply with quote

Studio80 wrote:
Just play with the last offset of the pointer. There is a chance you will find other options. This works for many strategy games. Or you can use the offset of the pointer until you reach the adres of the other character. It's going to save you a lot of time!

Just an example of what I mean.

Lets say the value is stored in: 02C45560

And this is the pointer:
Code:
Game.exe+04CF078  547 4CF 7C 4 Points to: 02C45560


Lets say that the second value is stored in: 02C45000

Just add the pointer to the list and double click on it. When you do an other window will open and you will see the offsets. Every time you change the offset the adres will change. Start with the first one on top until you reach the adres of the second value.

I used this method many times and its going to save you a lot of time and you will know for sure that you're using the correct pointer.

You mentioned that it's an online game. Many online games store their game stats on servers, this might be your case. You're only changing the numbers on your screen which is locally but not on the server. That means that you can't make a trainer for this game unless you could bypass their protection which is hacking in their system LOL


Yeah if you read what I said I just need to read the value not change it. I am just wanting to code something in VB.Net that notifies me when the cooldown is done or almost done so I can resuse this item to make it go back up.
Back to top
View user's profile Send private message
Studio80
Advanced Cheater
Reputation: 2

Joined: 12 Sep 2012
Posts: 83

PostPosted: Sun Dec 13, 2015 9:30 pm    Post subject: Reply with quote

Huh, but you said that you already found a pointer. So if it works you could change the offsets and might get the cooldown of the second character.

Else you have to scan for the second one like you did with the first one.
Back to top
View user's profile Send private message
VysseEnzo
How do I cheat?
Reputation: 0

Joined: 08 May 2015
Posts: 5

PostPosted: Sun Dec 13, 2015 11:00 pm    Post subject: Reply with quote

Studio80 wrote:
Huh, but you said that you already found a pointer. So if it works you could change the offsets and might get the cooldown of the second character.

Else you have to scan for the second one like you did with the first one.


Yes but how to automatically find the offset? I need to do this for more than just a few characters.
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