 |
Cheat Engine The Official Site of Cheat Engine
|
| View previous topic :: View next topic |
| Author |
Message |
AbeX300 How do I cheat?
Reputation: 0
Joined: 29 Dec 2013 Posts: 6
|
Posted: Thu Jan 02, 2014 4:25 pm Post subject: Momodora II - That blasted STD opcode |
|
|
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 |
|
 |
faizangmc Expert Cheater
Reputation: 0
Joined: 12 Nov 2013 Posts: 167
|
Posted: Thu Jan 02, 2014 4:27 pm Post subject: |
|
|
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 |
|
 |
Dark Byte Site Admin
Reputation: 474
Joined: 09 May 2003 Posts: 25932 Location: The netherlands
|
Posted: Thu Jan 02, 2014 4:49 pm Post subject: |
|
|
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 |
|
 |
Rydian Grandmaster Cheater Supreme
Reputation: 31
Joined: 17 Sep 2012 Posts: 1358
|
Posted: Fri Jan 03, 2014 12:16 am Post subject: |
|
|
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 |
|
 |
AbeX300 How do I cheat?
Reputation: 0
Joined: 29 Dec 2013 Posts: 6
|
Posted: Fri Jan 03, 2014 10:38 pm Post subject: |
|
|
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 |
|
 |
|
|
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
|
|