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 


Momodora II - That blasted STD opcode

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

Joined: 29 Dec 2013
Posts: 6

PostPosted: Thu Jan 02, 2014 4:25 pm    Post subject: Momodora II - That blasted STD opcode Reply with quote

Game: Momodora II
Modifying: Current Health
Goal: Address' Static Pointer
Problem: Opcodes don't have anything wrapped in [ ].

Right now, I'm scratching my head on how to find out what the current health address' pointer is!

Here's how my process goes:

1) I get the game and Cheat Engine running.
2) I go through the scanning process. It started out with the All value type and Unknown Initial Value scan type, but after doing this process several times, Double seems to be the most appropriate value type (as in, easiest to read). Search for value of 8, get hurt, search for value of 7, find address.
3) I use both Find out what accesses this address and Find out what writes to this address, then do the following ways to change my health: Health Pickup, Save Bell, Take Damage, Love Letter (Max Health Increase), Praying, Dying to Reset

No opcodes appear to write to the address, but there is an opcode that accesses it, and it's been bothering me since:

00402ABC - FD - std

Code:
00402AB7 - C1 F9 02 - sar ecx,02
00402ABA - 78 11 - js momodora2.exe+2ACD
00402ABC - FD - std  <<
00402ABD - F3 A5 - repe movsd
00402ABF - 89 C1  - mov ecx,eax

EAX=00000010
EBX=0872720C
ECX=00000003
EDX=0872720C
ESI=0018FAAC
EDI=08727214
ESP=0018F404
EBP=00000001
EIP=00402ABD


I've tried to scan all of those addresses (even though it already seems like a futile idea), but no luck, I can't find an address that actually points to the initial address (or at least I'm not willing to go through thousands of addresses from EAX, ECX, and EBP). The only thing I can even get from this is the std. Is there a workaround for this, or is it virtually impossible to get to the current health address' pointer without endlessly browsing through the memory region?

Also, new here!


Last edited by AbeX300 on Thu Jan 02, 2014 4:37 pm; edited 3 times in total
Back to top
View user's profile Send private message
faizangmc
Expert Cheater
Reputation: 0

Joined: 12 Nov 2013
Posts: 167

PostPosted: Thu Jan 02, 2014 4:27 pm    Post subject: Reply with quote

why dont you do a pointer scan? Its much easier than this method.

Right click on the found address. --- > Pointer scan. Do the scan.
Exit game. Restart game. Attach cheat engine to game. Find the address again. Copy the address. And in the previous pointer scan result. Click on pointer scanner tab ----> Rescan. Enter the address. Click ok. Let it scan.
Do this another time. You will get your static pointer.
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 474

Joined: 09 May 2003
Posts: 25932
Location: The netherlands

PostPosted: Thu Jan 02, 2014 4:49 pm    Post subject: Reply with quote

The actual instruction is "repe movsd" which copies the contents from ESI to EDI for ECX*4 bytes (12 bytes in this case)

Anyhow, before you start debugging I recommend you first find an address that actually has an effect in the game, instead of being a temporary storage holder
(Same for pointers, don't even bother with them until you have found the correct address with the correct type)

_________________
Tools give you results. Knowledge gives you control.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
Rydian
Grandmaster Cheater Supreme
Reputation: 31

Joined: 17 Sep 2012
Posts: 1358

PostPosted: Fri Jan 03, 2014 12:16 am    Post subject: Reply with quote

This is an older Game Maker game, right (i.e. not built with the new version that can make games cross-platform)? These things annoy the crap out of me because even when you do find addresses that hold actual values, the found code that edits them is almost always "std, repe movsd".

It's sometimes possible to find the code for the engine's built-in values like "health" (assuming the creator used the buolt-in health vbariable instead of assigning a custom one) and "x" and "y", but any custom variables set up by the creator seem to be run through a script interpreter and not assembly for themselves, and from what I've googled (which includes finding older threads on this forum on the subject), people mentioned that it'd likely be easier to just run something to edit the GML script yourself in the .exe.

Thankfully the newer versions of Game Maker actually seem to build games differently (since they can do HTML5 and such they can't just run the script in a custom interpreter anymore) so sometimes if you find a newer version of the game it's been built with a newer version and may be easier to mess with.

But yeah I'd like to know an easy way to edit this crap too.

_________________
Back to top
View user's profile Send private message
AbeX300
How do I cheat?
Reputation: 0

Joined: 29 Dec 2013
Posts: 6

PostPosted: Fri Jan 03, 2014 10:38 pm    Post subject: Reply with quote

Sorry for the late reply!

faizangmc wrote:
why dont you do a pointer scan? Its much easier than this method.

Right click on the found address. --- > Pointer scan. Do the scan.
Exit game. Restart game. Attach cheat engine to game. Find the address again. Copy the address. And in the previous pointer scan result. Click on pointer scanner tab ----> Rescan. Enter the address. Click ok. Let it scan.
Do this another time. You will get your static pointer.


I decided to try it out, but:

1) While I can see what makes this a better option (saving a lot of time when finding a pointer that has a lot of levels), I wouldn't necessarily say it's always the better option (quicker to do it manually with fewer levels).
2) I've tried doing the entire process six times (I even used the restart computer method at one point), but every time, it just ends with a blank list. D: Thanks for the suggestion, though!

Dark Byte wrote:
The actual instruction is "repe movsd" which copies the contents from ESI to EDI for ECX*4 bytes (12 bytes in this case)

Anyhow, before you start debugging I recommend you first find an address that actually has an effect in the game, instead of being a temporary storage holder
(Same for pointers, don't even bother with them until you have found the correct address with the correct type)


Clarify? :o

I'm certain that the addresses I find actually modify the health (and I even found the most accurate type, Double), and wouldn't you need the temporary storage holders to even find the pointers? Unless I'm getting the wrong idea...

Rydian wrote:
This is an older Game Maker game, right (i.e. not built with the new version that can make games cross-platform)? These things annoy the crap out of me because even when you do find addresses that hold actual values, the found code that edits them is almost always "std, repe movsd".

It's sometimes possible to find the code for the engine's built-in values like "health" (assuming the creator used the buolt-in health vbariable instead of assigning a custom one) and "x" and "y", but any custom variables set up by the creator seem to be run through a script interpreter and not assembly for themselves, and from what I've googled (which includes finding older threads on this forum on the subject), people mentioned that it'd likely be easier to just run something to edit the GML script yourself in the .exe.

Thankfully the newer versions of Game Maker actually seem to build games differently (since they can do HTML5 and such they can't just run the script in a custom interpreter anymore) so sometimes if you find a newer version of the game it's been built with a newer version and may be easier to mess with.

But yeah I'd like to know an easy way to edit this crap too.


If by older, you mean Game Maker 7, then yes! And if the std case applies to the rest of GM7 games, then at least I'm not the only one having the issue... :c
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine 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