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 


Questions on automatically finding addresses

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

Joined: 22 Mar 2017
Posts: 3
Location: USA.

PostPosted: Wed Mar 22, 2017 4:13 pm    Post subject: Questions on automatically finding addresses Reply with quote

First thing's first: Yes, i have searched for countless hours (On the forums and otherwise) on how to do this.
I am fully aware of the pointer scanner, and the "find out what is xxxxing this address" functions. But i want to know if i'm doing anything wrong or if this issue is due to the game being relatively new... (From around 2015)

I am attempting to create a basic cheat table for a 2-D Platformer action game called "Wings of Vi".

(There was a screenshot here. Can't post URL's yet.)

Something about the game forces the addresses to be changed every time you die, but they are still relatively quick to find with a few scans, for instance:

I've managed to locate the value (4 bytes) for the remaining number of "jumps" the player has left many times. When the player is on the ground, this value is 2, and jumping any amount of times decreases it until it's 0, at which point, you can no longer jump. We don't want that. So, adding the value to the address list and freezing (setting it as active) it at two does exactly as logic would suggest; you can jump indefinitely.

Example for consistency:
(There was a screenshot here. Can't post URL's yet.)

However, there are other values that are a lot more complicated to find due to the resetting of the addresses on the player's death, such as the death state itself. I have managed to find this value a handful of times, and would love to be able to automate this process via pointer scanning or any other means.

What i've been doing is precisely this: I find the address, add it to the list. I right click and pick "Find out what accesses this address" and change it around in game by jumping around a lot. Obviously, if i jump 15 times, i'll want to check the opcode that has accessed it that many times. I pull up the "More information" tab and find the "The value of the pointer needed to find this addres is probably XXXXXXXX", right click and copy that, and change the value type in the CE scanner to 4 bytes, set the scan type to exact value, and search for the probable address. It never yields any results.

Hex Scan:
(There was a screenshot here. Can't post URL's yet.)

I've tried repeating this same process, but using the probable address and the regular address in the pointer scanner with the normal settings, and i end up getting no results unless i raise the max level and offset to something absolutely rediculous, at which point i get hundreds of millions of results, yet restarting the game, finding the same value, and searching for that new value yields no results either.

Pointer Scan:
(There was a screenshot here. Can't post URL's yet.)
(^^I promise the settings for this were fine, i read up on it :P)

(There are also no public decompilers for this game, so that's not an option either. :/)

Extra info: I'm not running this on an emulator, and i'm using CE 6.6 and am running the 64-bit version of Windows 10 Pro. Any other relevant specs that are needed, feel free to ask and I'll send them in a reply.


So, what is something else i could try to do to find out what exactly is pointing to these dynamic addresses? Is there a setting i could change? Or, is there another method and an accompanying in-depth tutorial? (After all, this is literally the first time i've tried to automate this process. If i'm doing something wrong, please tell me about it. Any relevant feedback is helpful here.)

Thanks!
Back to top
View user's profile Send private message
Cake-san
Grandmaster Cheater
Reputation: 8

Joined: 18 Dec 2014
Posts: 541
Location: Semenanjung

PostPosted: Wed Mar 22, 2017 7:19 pm    Post subject: Reply with quote

Script from my old table:

Main script:
Code:

[ENABLE]
aobscanmodule(aob_inj,Wings Of Vi.exe,F2 0F 10 40 08 F2 0F 11 45 F4 EB 06 8B 40 08 89 45 F4)
registersymbol(aob_inj)
label(base)
aob_inj+18:
base:

globalalloc(thread,2048)
createthread(thread)
label(originalcode)

label(_temp)
registersymbol(_temp)
label(_base)
registersymbol(_base)

thread:
mov ecx,[base]
cmp ecx,0
je originalcode
mov ecx,[ecx]
cmp ecx,0
je originalcode
mov [_temp+4],ecx
mov ecx,[ecx+7c]
cmp ecx,0
je originalcode
mov ecx,[ecx+28]
mov [_temp+8],ecx
mov ecx,[_temp+4]
mov ecx,[ecx+88]
mov [_temp+c],ecx
mov ecx,[_temp+4]
mov ecx,[ecx+58]
mov [_temp+10],ecx
mov ecx,[_temp+4]
mov ecx,[ecx+1278]
mov [_temp+14],ecx
mov ecx,[_temp+c]
add ecx,[_temp+8]
add ecx,16
movsx ecx,word ptr [ecx]
imul ecx,ecx,00000092
add ecx,[_temp+10]
add ecx,6
movsx ecx,word ptr [ecx]
imul ecx,ecx,8
add ecx,[_temp+14]
mov [_base],ecx
mov ecx,[_base]
cmp ecx,0
je originalcode
mov ecx,[ecx]
cmp ecx,0
je originalcode
mov ecx,[ecx+242]
cmp ecx,0
je originalcode
lea ecx,[ecx+100]
mov [_base+4],ecx
originalcode:
mov ecx,0
push #1000
call sleep
cmp [_temp],0
je thread
ret
_temp:
dq 0 0 0
_base:
dd 0 0

[DISABLE]
_temp:
dd 01


number of jump : [[[_base]]+242]+88

#sorry for this wall of code Embarassed

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

Joined: 22 Mar 2017
Posts: 3
Location: USA.

PostPosted: Thu Mar 23, 2017 3:40 pm    Post subject: Reply with quote

@Cake-San
Quote:
Script from my old table:

Main script:
Code:

[ENABLE]
aobscanmodule(aob_inj,Wings Of Vi.exe,F2 0F 10 40 08 F2 0F 11 45 F4 EB 06 8B 40 08 89 45 F4)
registersymbol(aob_inj)
label(base)
aob_inj+18:
base:

globalalloc(thread,2048)
createthread(thread)
label(originalcode)

label(_temp)
registersymbol(_temp)
label(_base)
registersymbol(_base)

thread:
mov ecx,[base]
cmp ecx,0
je originalcode
mov ecx,[ecx]
cmp ecx,0
je originalcode
mov [_temp+4],ecx
mov ecx,[ecx+7c]
cmp ecx,0
je originalcode
mov ecx,[ecx+28]
mov [_temp+8],ecx
mov ecx,[_temp+4]
mov ecx,[ecx+88]
mov [_temp+c],ecx
mov ecx,[_temp+4]
mov ecx,[ecx+58]
mov [_temp+10],ecx
mov ecx,[_temp+4]
mov ecx,[ecx+1278]
mov [_temp+14],ecx
mov ecx,[_temp+c]
add ecx,[_temp+8]
add ecx,16
movsx ecx,word ptr [ecx]
imul ecx,ecx,00000092
add ecx,[_temp+10]
add ecx,6
movsx ecx,word ptr [ecx]
imul ecx,ecx,8
add ecx,[_temp+14]
mov [_base],ecx
mov ecx,[_base]
cmp ecx,0
je originalcode
mov ecx,[ecx]
cmp ecx,0
je originalcode
mov ecx,[ecx+242]
cmp ecx,0
je originalcode
lea ecx,[ecx+100]
mov [_base+4],ecx
originalcode:
mov ecx,0
push #1000
call sleep
cmp [_temp],0
je thread
ret
_temp:
dq 0 0 0
_base:
dd 0 0

[DISABLE]
_temp:
dd 01


number of jump : [[[_base]]+242]+88

#sorry for this wall of code Embarassed

I threw that into the auto assembler and it threw me an error while scanning for AOB's : aob_inj.

Did i do something wrong, or is the script just not compatible with this version of the game?

Or am i just stupid and i need to do something else with it...
Back to top
View user's profile Send private message
Cake-san
Grandmaster Cheater
Reputation: 8

Joined: 18 Dec 2014
Posts: 541
Location: Semenanjung

PostPosted: Fri Mar 24, 2017 1:15 am    Post subject: Reply with quote

Dournbrood wrote:
@Cake-San
Quote:

I threw that into the auto assembler and it threw me an error while scanning for AOB's : aob_inj.

Did i do something wrong, or is the script just not compatible with this version of the game?

Yeah, probably because of the version, cause this script is for the old one (not remembering which one)....

Which one are you on ?
Back to top
View user's profile Send private message
Dournbrood
How do I cheat?
Reputation: 0

Joined: 22 Mar 2017
Posts: 3
Location: USA.

PostPosted: Sat Mar 25, 2017 3:17 pm    Post subject: Reply with quote

I'm on version 1.12, and the script can't find the base address because it changed or smth. Tried to rewrite but failed :/
Back to top
View user's profile Send private message
Cake-san
Grandmaster Cheater
Reputation: 8

Joined: 18 Dec 2014
Posts: 541
Location: Semenanjung

PostPosted: Sat Mar 25, 2017 8:12 pm    Post subject: Reply with quote

Here's a messy asm script for 1.12
Not fully test though... Rolling Eyes
Code:

[ENABLE]
aobscanmodule(aob_inj,Wings Of Vi.exe,66 83 BA 96 00 00 00 FF)
registersymbol(aob_inj)
label(base)
aob_inj+B:
base:

globalalloc(thread,2048)
createthread(thread)
label(originalcode)

label(_temp)
registersymbol(_temp)
label(_base)
registersymbol(_base)

thread:
mov ecx,[base]
cmp ecx,0
je originalcode
mov ecx,[ecx]
cmp ecx,0
je short originalcode
mov [_temp+4],ecx
mov eax,[ecx+78]
cmp eax,0
je originalcode
mov edx,[eax+10]
mov eax,[ecx+7C]
add eax,edx
cmp eax,0
je originalcode
mov edx,[ecx+88]
mov esi,[eax+04]
add esi,edx
cmp esi,0
je originalcode
mov [_temp+8],esi
movsx edx,word ptr [esi]
add esi,edx
mov ebx,esi
mov cx,[ebx+8]
movsx edx,cx
imul edx,edx,0092
mov esi,[_temp+4]
add edx,[esi+58]
cmp edx,0
je originalcode
movzx eax,word ptr[edx+06]
movsx ecx,ax
mov eax,[esi+1278]
mov eax,[eax+ecx*8]
cmp eax,0
je originalcode
mov [_temp+C],eax
/*mov ebx,[_temp+8]
movsx ecx,word ptr[ebx+14]
shl ecx,04
mov edx,[_temp+C]
mov esi,[edx+0080]
add ecx,[esi+edx]*/
mov [_base],eax
originalcode:
mov eax,0
mov ebx,0
mov ecx,0
mov edx,0
mov esi,0

push #1000
call sleep
cmp [_temp],01
jne thread
ret

_temp:
dq 0 0 0
_base:
dd 0
[DISABLE]
_temp:
dd 01

_________________
...
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