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 


When a game hide information too well.

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

Joined: 19 Oct 2015
Posts: 7

PostPosted: Mon Oct 19, 2015 11:51 am    Post subject: When a game hide information too well. Reply with quote

Hello guys,
so I've been fiddling with a game for a few days now and I'm on the verge of losing my mind searching for a base address.

I followed all the tutorials and videos I could find, learned about multi level points and all the stuff. The problem is that all the examples always use "stupid" games, games that don't make any effor to hide information. Now that I came across a well written game, I'm facing a wall.

First thing I noticed: the HP value is a 2 byte "nonsense" number, and it changes everytime.
Say my hp is 505, than the address that contains my HP will contain a number such as 19968 (but this changes, I think they use a random salt everytime you open the game).
I don't know how to get around this problem, how to find a formula that will give me the correct HP. This is my first question: how would I go about doing that?

Second question is related to the base pointer.
I managed to find the first level pointer for hp and mana (they are always 0x8 away from each other, e.g. mp = 022208AA hp = 022208A2).
When I use "find out what access..." on hp, there is only 1 opcode that accesses ths hp when it changes, and it has no offset:
fstp dwrod ptr [esi] (esi = 022208A0).

I figured out that the address pointing to 022208A0 + 0x2 = hp, so 022208A0 + 0x2 + 0x8 = mp.

Now, if I use "find out what accesses this pointer" on hp pointer, I get 9 opcodes, all equal.
Here is where things get out of my league:


img @i.imgur dot com/KiBj6d3.png

>> 004F5D05 - mov esi, [ebx+eax*4+000000A4]
The value of the pointer [...] is probably 07F12678 (6 resuls upon search).

EAX = 00000DC9
ESI = 022208A0

Now 07F12678 gives me 6 resuls upon search, but I can't find the hp anymore because I can't find the offset.
PS: I tried DC9 * 4 + A4 = 37C8, it doesn't help.
PS2: +000000A4 is always there, never changes.

What am I missing?


I figured out. I wasn't adding the second level offset. I had to add 2 offsets for 07F12678: 37C8 and another with 2, then I got a pointer to the hp again.

I kept on doing this, I found 8 levels. Now I'm stuck. I searched for an address (008276B0) that gives me 2 possible pointers:
02214354 and 0832FF70, the problem is that after adding the offset to these pointers, I get nothing from "find out what accesses this pointer", just a bunch of

mov esi,[esi]
mov edx,[edx]
mov eax,[eax]
mov edx,[edx]

and in all of these, the probable address is again 008276B0, it's like im in a loop.

What is the procedure here?
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4697

PostPosted: Mon Oct 19, 2015 8:38 pm    Post subject: Reply with quote

First question is an easy one I think. It's the wrong data type.

You said that fstp dword ptr [esi] (esi = 022208A0) writes to HP. fstp is an instruction usually used with floating point numbers, not integers. dword ptr means that you're working with something that's the length of a double word, or 4 bytes. Put this together, and you should see that you're probably dealing with a float stored at 022208A0, and not a 2-byte stored at 022208A2.

With regards to your second question, I'm amazed you did it manually for 8 levels of pointers. I get bored after I can't find a static after 2 or 3 levels and end up doing a pointer scan for it. CE's pointer scanner is pretty straightforward for the most part. Make sure you set the max offset value to be 16384 (something greater than 14280, or 37C8 converted to decimal), and maybe start with a lower max level (like 3) and work your way up. If you'd like a guide/tutorial for pointer scanning, you can search around for one. I found one here- seems good but I only took a glance at 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
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