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 


Cannot find base address for pointer. Value won't change.

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

Joined: 06 May 2016
Posts: 6

PostPosted: Mon May 09, 2016 11:17 pm    Post subject: Cannot find base address for pointer. Value won't change. Reply with quote

Short and sweet version:

DarkSouls2:SotF (Offline only) Cast Speed.

Used 'Unknown initial value / All' & 'Changed/Unchanged Value' only (added piece of armor that changed stat, removed piece, added different piece, etc) to arrive at the address: 7FFEB6DC5E8. I cannot change or freeze values, and after 3 days of watching tutorials on multilevel pointer offset scanning, I still have no idea wtf I'm doing.

Below are screens of the debugger on the line that write to the screen display of Cast Speed on the character Sheet. Hopefully enough is included that you can just point me in the right direction.

Code:
http://postimg.org/image/ulhzwude9/

http://postimg.org/image/wb4va4x8x/


I fixed the pics above. >.<

I'm just trying to enjoy playing a caster in the DS series, in offline mode, until I can afford to get DS3.


Last edited by susofseattle on Tue May 10, 2016 1:20 pm; edited 2 times in total
Back to top
View user's profile Send private message
ulysse31
Master Cheater
Reputation: 2

Joined: 19 Mar 2015
Posts: 324
Location: Paris

PostPosted: Tue May 10, 2016 3:35 am    Post subject: Reply with quote

What are you trying to do ?
Are you trying to edit your cast speed value ? If yes, correct me if I am wrong but you equipped and unequipped armors so that you could scan for this cast speed value ?
What do you mean you cannot freeze or change value ? does it crash or does it just get unaffected (can happen if game rewrites it many times per second) ?
Back to top
View user's profile Send private message
susofseattle
How do I cheat?
Reputation: 0

Joined: 06 May 2016
Posts: 6

PostPosted: Tue May 10, 2016 1:24 pm    Post subject: Reply with quote

The end goal is to overwrite the calculation supplied to "Cast Speed", to supply a fixed value.

"Cast Speed" is an increasing numerical value that is influence by: Armor Effects (a combination of 5 separate pieces that are known raise Cast Speed); increases with stats: INT, ATN, ADP, FTH, and rings with the effect "increases your casting speed".

After adding the only address to the list: 7FFEB6DC5E8 (4byts), the value of the Cast Speed showed correctly, and adjusted as equipment was removed and added. The value shown reflected the Cast Speed on the Character Sheet, exactly.

However, if I "X'd" the box for that memory address, the value would change anyway. If I changed the value, the change did not stay. It immediately reverted to the original value.

--

I believe I've basically found the summary 'display' value for Cast Speed, but not one of the base addresses that factor into the calculation to arrive at it. Or in other words, I found a multi-level pointer.

I have honestly watched about 16 hours of tutorials for pointer scans / using the address to find the offset and tracing the pointer upwards; but the command: "mov [rcx],edx" doesn't have an offset to trace, and RCX is the address I found (shown in pics).

I'm lost.

--

In the second pic listed, you can see a large portion of the code that should contain what I'm looking for.. but I don't know assembly.
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4702

PostPosted: Tue May 10, 2016 1:53 pm    Post subject: Reply with quote

Quote:
I believe I've basically found the summary 'display' value for Cast Speed, but not one of the base addresses that factor into the calculation to arrive at it. Or in other words, I found a multi-level pointer.

The part about that being a display value is very likely correct. I don't know how you got "multilevel pointer" from that, however. That's like saying 2+2=fish.

If you couldn't find anything by doing that encompassing value scan in the first post, then the game probably just keeps a set of constant values around in memory and uses them if it needs to. For example, if this piece of armor is equipped, then take into account its effect on your cast speed. In this case, the only way you can do this is to learn assembly and backtrace that subroutine to find out where it's getting edx from.

_________________
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
susofseattle
How do I cheat?
Reputation: 0

Joined: 06 May 2016
Posts: 6

PostPosted: Tue May 10, 2016 2:16 pm    Post subject: Reply with quote

Quote:
..being a display value is very likely correct. I don't know how you got "multilevel pointer" from that, however..

It's an educated guess based on the limited understanding I have of the assembly code moving data around into the addresses. That and the CE forum threads for the successful Dark Souls series tables, all make mention that the character sheet values are addresses to multilevel pointers. It seemed a safe assumption. (the address found is black in CE's window, not green)

Quote:
..is to learn assembly and backtrace that subroutine..

I was afraid you were going to say that. If you feel confident enough, could you glance at the second pic posted in the OP, and steer me in the right direction? Not a solve, unless you're feeling generous, just a "you're on the right track".
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4702

PostPosted: Tue May 10, 2016 2:34 pm    Post subject: Reply with quote

A pointer is a type of value that is a reference to another address. Nothing more. It doesn't have anything to do with calculating a value. It would be useful for finding that specific value again after you restart the game, but beyond that, it's no more useful than that address is.

There isn't much I can deduce from that section of assembly. Some other instruction(s) almost certainly calls that to run. The start of that subroutine is probably mov [rsp+08],rbx (the one after the int 3).

As I said, backtrace it. Find the instruction that calls this subroutine to run when it writes to that address (break and trace or just look at the stack), look behind it, and find out where it's getting edx from. Use conditional breakpoints if that instruction accesses more than that 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
ulysse31
Master Cheater
Reputation: 2

Joined: 19 Mar 2015
Posts: 324
Location: Paris

PostPosted: Tue May 10, 2016 3:57 pm    Post subject: Reply with quote

Will point you the the most similar case I have seen which is a tutorial by Geri, it also contains a video of him backtracing a function which encrypts some data (missiles, lifes and such).
Not the easiest but a fairly accessible after CE's tutorial has been completed :
http://szemelyesintegracio.hu/cheats/41-game-hacking-articles/225-basic-encryptions-debugging-backtracing-and-some-info-on-the-stack


Taking a guess at the code :
cmp [rcx],edx
je...
mov [rcx],edx

meaning if you manually change the value the game probably notices it right away because Z flag is no longer set.
If you change the 'je' to 'jmp' and manually edit the value of the address you found, what happens ? also put a breakpoint on mov [rcx],edx just to be sure it no longer executes that way.

Edit : Just to be clear if that indeed is only a graphical value it won't affect the gameplay nevertheless by patching this instruction the game will no longer instantly overwrite whichever value you enter (or it will need to use another opcode to do so which is possible).
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