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 


How to DEALLOCATE Aobscan address?
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
Meiyoh
Master Cheater
Reputation: 1

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 12:01 pm    Post subject: How to DEALLOCATE Aobscan address? Reply with quote

Hello.
Is it a bug or something but I want to use an AOBSCAN for a static address. The reason is this address is being used by various stuff. I want to separate it. So I want to make say Two options in Cheat Engine table which When an AOBScan is run - find the SAME address. But I want so I can disable on (Untick it) and thus make it so it's Result address goes ?? and nothing can freeze the program/game when I run with INCORRECT value being put.

How to make so when I disable and AOBScan script the found address goes "??"

Thanks

_________________
I am the forgotten one the dead one.
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sun Mar 12, 2017 12:55 pm    Post subject: Reply with quote

To clarify, you have an instruction that is static, that accesses many addresses -- one of which, you wish to manipulate? You are able to find that address with an AOBscan?

I really do not understand what you are saying/wanting. Can you explain it better, please?
Back to top
View user's profile Send private message
Meiyoh
Master Cheater
Reputation: 1

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 1:05 pm    Post subject: Reply with quote

I locate say A moves Address.
Each character uses this SAME address - static.
I want to make some moves work - add some custom combos by manipulating the address's value. However if I put a wrong value - Animation/attack id that works with one character to another = CRASH.

So I have assigned hotkeys to those options. They are GLOBAL for each character. I want so players when use my table they toggle ONLY 1 Character Moves Mod option thus not freezing the game when pressing hotkeys. Eg hotkeys are set with values specific to the character the option is named

Example "Bobby Moves Mod". "Johnny Moves Mod"

all those options use the SAME hotkeys and ADDRESS.
But if both are activated GAME will freeze.

So how can I make when only 1 is ticked the other is ?? so game will not crash.

This is why I use AOBScan because each char has specific animation IDs wroten in a memory Which I use to "find" the static address. The purpose of me using AOBscan is to prevent crash. So it won't find the moves address if you do not play as the specific character. How Can I make so the

Address (JohhnyMovesMod+0) goes "??" when it's parrent AOBScan is UNTICKED.

thank you.

_________________
I am the forgotten one the dead one.
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sun Mar 12, 2017 1:17 pm    Post subject: Reply with quote

Do you have a way of automatically differentiating which character is being used, in real time? If so, then that would be the obvious way to avoid any issues, as you can use that for your compare to activate/nullify any segments of code. If you have no way of differentiating characters automatically, then you will need to set up different hotkeys for each character's move set. For example:

Bobby move set hotkeys:
Shift+1
Shift+2
Shift+3

Johnny move set hotkeys:
Ctrl+1
Ctrl+2
Ctrl+3
Back to top
View user's profile Send private message
Meiyoh
Master Cheater
Reputation: 1

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 1:19 pm    Post subject: Reply with quote

++METHOS wrote:
Do you have a way of automatically differentiating which character is being used, in real time? If so, then that would be the obvious way to avoid any issues, as you can use that for your compare to activate/nullify any segments of code. If you have no way of differentiating characters automatically, then you will need to set up different hotkeys for each character's move set. For example:

Bobby move set hotkeys:
Shift+1
Shift+2
Shift+3

Johnny move set hotkeys:
Ctrl+1
Ctrl+2
Ctrl+3


Ok. Lets say I have addresses that have specific values when playing as specific Char.

How can I make so Cheat Engine asks first if the values MATCH and then runs the hotkeys?
I don't want to use KEYBOARD I use pad. It's a beat them up game.

Can you write me an example script.

_________________
I am the forgotten one the dead one.
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sun Mar 12, 2017 1:31 pm    Post subject: Reply with quote

1. You do not want to use the values that you are wanting to manipulate for your compare without have countermeasures in place to return those values to default once you are finished with them.

2. CE supports hotkey integration for controllers, so hotkeys can be assigned via controller buttons now.

3. Writing an example script will do little good unless you have determined that you can differentiate characters in some way.

If you have not already done so, I would recommend studying the last step of the CE tutorial covering data structure dissection. Additional strategies for code segregation:

++METHOS wrote:
  • You can use a pointer address for your filter, inside of your script, for the value that you are trying to manipulate.
  • You can use pointer trees inside of the data structure to find something viable.
  • You can shift the data structure (+ or -) and/or expand its size to find something useful.
  • You can use the structure spider to find workable strings and/or for comparative analysis.
  • You can check the register values by attaching the debugger or setting a breakpoint to see if something can be used for your filter.
  • You can check to see if there are any instructions that are exclusive to the address/value that you are trying to manipulate and store the address for your filter by creating a second injection point.
  • You can check to see if there are any instructions that are exclusive to any other address/value inside of the data structure for the address/value that you are trying to manipulate and store the address for your filter by creating a second injection point.
  • You can analyze assembly code to see if an identifier is being checked or assigned somewhere.
  • Et al.
Back to top
View user's profile Send private message
Meiyoh
Master Cheater
Reputation: 1

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 1:50 pm    Post subject: Reply with quote

Ok simpler stuff.

How can I make aobscan FOUND address "begone" when I disable the script that finds it?

Example The found address that uses symbol "JohhnyMoves" goes ?? when
script is disabled.

_________________
I am the forgotten one the dead one.
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sun Mar 12, 2017 2:01 pm    Post subject: Reply with quote

I think you are approaching this all wrong. Nonetheless, if you have a script that finds an address, and you store that address using a custom symbol (not globally allocated, and with unregistersymbol in disable section), then disabling that script should nullify its value.

So...

Code:
label(address)

registersymbol(address)

newmem:
push edi
lea edi,[register+offset]             //address that you want to store
mov [address],edi
pop edi

originalcode:
//code

address:
dd 0

//stuff

[DISABLE]
//stuff

unregistersymbol(address)


Once the script is activated, manually add an address to your table, click on the pointer checkbox and put address in the bottom address/text field.
Back to top
View user's profile Send private message
Meiyoh
Master Cheater
Reputation: 1

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 2:14 pm    Post subject: Reply with quote

Quote:


[ENABLE]
aobscanregion(JohnyMoves,C9000000,CF000000,?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 89 88 08 3D 01)
registersymbol(JohnyMoves)
label(_JohnyMoves)

JohnyMoves:
_JohnyMoves:


[DISABLE]
unregistersymbol(JohnyMoves)


But when I untick the script the address (JohnyMoves+0) doesnt get its value
nullified. What am I wrong here?

_________________
I am the forgotten one the dead one.
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

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

PostPosted: Sun Mar 12, 2017 3:55 pm    Post subject: Reply with quote

it won't get nullified, it just becomes invalid, so if you add a new address with the name JohnyMoves it will be an invalid entry

existing entries will remaim their last known good address

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

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

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 3:57 pm    Post subject: Reply with quote

[quote:91b261542b="Dark Byte"]it won't get nullified, it just becomes invalid, so if you add a new address with the name JohnyMoves it will be an invalid entry

existing entries will remaim their last known good address[/quote:91b261542b]

Yes... I see this even after program reload the table remembers the STATIC
address and that's the biggest issue here.

Perphaps a pointer like thing is better. Not an AOB .

Thank you BOTH so far!

_________________
I am the forgotten one the dead one.
Back to top
View user's profile Send private message
panraven
Grandmaster Cheater
Reputation: 62

Joined: 01 Oct 2008
Posts: 958

PostPosted: Sun Mar 12, 2017 4:06 pm    Post subject: Reply with quote

The problem is it allow edit a previous address, but now 'begone'.

The behavior that when the symbol 'begone' (eg. by unregistersymbol), but still able to write/edit the symbol address value is strange, ie. the symbol not existed in user symbol list.
I'm not sure, the CE used to be not behave like this.

To test, try make a address symbol having zero value at its address, like
this in AA: (this use ce 6.6 feature that offset field accept symbol, (and also lua expression))
Code:

globalalloc(pZero,16)

Then set a memory record with address:
Pointer Type-
base : pZero,
offset1 : your symbol address.

Now, it should show ?? when the symbol 'begone', as expected.

It seems if the base address was readable then became not readable, the calculated address doesn't update (to the unreadable/non-existed one, so that the value dispay ??).

Now with pZero, pZero as base address, it will be readable as long as the symbol is not unregistered, so it keep update the calculated result address, and if final result is not readable or symbol not exist, it show ?? as value.

bye~

_________________
- Retarded.
Back to top
View user's profile Send private message
Meiyoh
Master Cheater
Reputation: 1

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 4:26 pm    Post subject: Reply with quote

panraven wrote:
The problem is it allow edit a previous address, but now 'begone'.

The behavior that when the symbol 'begone' (eg. by unregistersymbol), but still able to write/edit the symbol address value is strange, ie. the symbol not existed in user symbol list.
I'm not sure, the CE used to be not behave like this.

To test, try make a address symbol having zero value at its address, like
this in AA: (this use ce 6.6 feature that offset field accept symbol, (and also lua expression))
Code:

globalalloc(pZero,16)

Then set a memory record with address:
Pointer Type-
base : pZero,
offset1 : your symbol address.

Now, it should show ?? when the symbol 'begone', as expected.

It seems if the base address was readable then became not readable, the calculated address doesn't update (to the unreadable/non-existed one, so that the value dispay ??).

Now with pZero, pZero as base address, it will be readable as long as the symbol is not unregistered, so it keep update the calculated result address, and if final result is not readable or symbol not exist, it show ?? as value.

bye~



So my AOB Scan find an address C147DEF6 as a result.
What exactly I shall do.

?

_________________
I am the forgotten one the dead one.
Back to top
View user's profile Send private message
panraven
Grandmaster Cheater
Reputation: 62

Joined: 01 Oct 2008
Posts: 958

PostPosted: Sun Mar 12, 2017 4:36 pm    Post subject: Reply with quote

Suppose your AA like this:
Code:


globalalloc(pZero,16) // add somewhere in AA for use in memory record

[ENABLE]
aobscan(mytarget, ...)
registersymbol(mytarget)
[DISABLE]
unregistersymbol(mytarget)


Make a memory record just like yours but make to check the box [] Pointer, move the original base address (mytarget) to 1st offset field, then set base address to pZero.
If it is already a Pointer type address, move also other offsets one level up.

Hope it work~



ce_basePtrNotUpdate.jpg
 Description:
 Filesize:  148.51 KB
 Viewed:  9975 Time(s)

ce_basePtrNotUpdate.jpg



_________________
- Retarded.


Last edited by panraven on Sun Mar 12, 2017 6:16 pm; edited 1 time in total
Back to top
View user's profile Send private message
Meiyoh
Master Cheater
Reputation: 1

Joined: 14 Mar 2015
Posts: 402

PostPosted: Sun Mar 12, 2017 4:56 pm    Post subject: Reply with quote

panraven wrote:
Suppose your AA like this:
Code:


globalalloc(pZero,16) // add somewhere in AA for use in memory record

[ENABLE]
aobscan(mytarget, ...)
registersymbol(mytarget)
[DISABLE]
unregistersymbol(mytarget)


Make a memory record just like yours but make to check the box [] Pointer, move the original base address (mytarget) to 1st offset field, then set base address to pZero.
If it is already a Pointer type address, move also other offsets one level up.

Hope it work~


Thank you but it goes in a wrong address far far away from my resulted address.

It does disable the address on script disable but the address is wrong.
The address is static btw so I need not use pointers for it - I mean I only Add the registeredsymbol of the address found and the Pzero part in the Pointer.

Can you show me a screenshot or something. I did everything but it gives me a wrong address.

It gives -FFFFFFFFXXXXXXXX- where the XXXXXXXX is the correct address?

_________________
I am the forgotten one the dead one.
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
Goto page 1, 2  Next
Page 1 of 2

 
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