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 


AOB scan
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
kik4444
Expert Cheater
Reputation: 0

Joined: 07 Sep 2013
Posts: 120
Location: Bulgaria

PostPosted: Sun Dec 01, 2013 5:17 am    Post subject: AOB scan Reply with quote

When doing an aobscan to see if an option for a trainer would still work, how do I know which bytes I have to scan? Also I've noticed that in CE 6.4 (which I still don't have), there's an option for an AOB injection. What's the difference between that and a normal script? Does it automatically find the correct bytes?
_________________
Silence will fall when the question is asked...
Back to top
View user's profile Send private message
Chris12
Expert Cheater
Reputation: 1

Joined: 27 Apr 2012
Posts: 103

PostPosted: Sun Dec 01, 2013 6:09 am    Post subject: Reply with quote

Serach your AoB in the new executable. If there is result and it's more or less at the same position then your code should still work.

Of course it's not guaranteed but the chance is quite high that it will still work.
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 Dec 01, 2013 12:01 pm    Post subject: Reply with quote

The bytes are shown in 'Memory Viewer', in the 'Bytes' column. They are also automatically added to your script when you use 'cheat table framework code' and then 'code injection'. For example, they will be written at the bottom, like so:

Code:
//Alt: db E8 2C 04 00 00


Here is a template I use for AOB (with added info):

Code:

[ENABLE]
aobscan(AOB1,?? ?? ?? ?? ?? ?? ?? ?? ??)               //Put AOB code here, can be customized and can have wildcards
alloc(newmem,40)
label(returnhere)
label(XX1)                                             //all labels XX1 can be changed to whatever, I typically increment them as I add more scripts (e.g. XX1, then XX2, then XX3 etc....same with AOB1, AOB2 etc.)
registersymbol(XX1)

newmem:
??????????????????????                                 //new code here
jmp returnhere

AOB1:
XX1:
jmp newmem
??????????????????????                                 //required nop's here, if any
returnhere:
 
[DISABLE]
dealloc(newmem)
XX1:
db ?? ?? ?? ?? ?? ?? ?? ?? ??                          //AOB info to restore code, can be written as assembly code

unregistersymbol(XX1)
Back to top
View user's profile Send private message
daspamer
Grandmaster Cheater Supreme
Reputation: 54

Joined: 13 Sep 2011
Posts: 1588

PostPosted: Sun Dec 01, 2013 12:43 pm    Post subject: Reply with quote

Code:
[ENABLE]
registersymbol(AOB1)
aobscan(AOB1,?? ?? ?? ?? ?? ?? ?? ?? ??)               //Put AOB code here, can be customized and can have wildcards
alloc(newmem,40)
label(returnhere)

newmem:
??????????????????????                                 //new code here
jmp returnhere

AOB1:
jmp newmem
??????????????????????                                 //required nop's here, if any
returnhere:
 
[DISABLE]
dealloc(newmem)
AOB1:
db ?? ?? ?? ?? ?? ?? ?? ?? ??                          //AOB info to restore code, can be written as assembly code

unregistersymbol(AOB1)

_________________
I'm rusty and getting older, help me re-learn lua.
Back to top
View user's profile Send private message Visit poster's website
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sun Dec 01, 2013 4:00 pm    Post subject: Reply with quote

Yes, either way should work. My template was based off of an old script that Geri had published as part of his AOB tutorial.
Back to top
View user's profile Send private message
daspamer
Grandmaster Cheater Supreme
Reputation: 54

Joined: 13 Sep 2011
Posts: 1588

PostPosted: Sun Dec 01, 2013 7:09 pm    Post subject: Reply with quote

++METHOS wrote:
Yes, either way should work. My template was based off of an old script that Geri had published as part of his AOB tutorial.

Yes yours is the method that was used in C.E 6.2
While in the new version, you can skip the label stuff and etc.

_________________
I'm rusty and getting older, help me re-learn lua.
Back to top
View user's profile Send private message Visit poster's website
kik4444
Expert Cheater
Reputation: 0

Joined: 07 Sep 2013
Posts: 120
Location: Bulgaria

PostPosted: Thu Dec 19, 2013 1:37 pm    Post subject: Reply with quote

Sorry to bump this up again, but I finally tried doing it on a game, and it crashes it. Here's the code I used:
Code:
define(game,"StateOfDecay.exe"+1112A0F)
define(bytes,CC 0F 11 80 AC 00 00 00)
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
registersymbol(aob1)
label(returnhere)
aobscan(aob1,bytes)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

push eax
mov eax,(float)999999
movd xmm0,eax
pop eax



game:
jmp newmem
nop
nop
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
game:
movss [eax+000000AC],xmm0
db bytes
unregistersymbol(aob1)

_________________
Silence will fall when the question is asked...
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Thu Dec 19, 2013 2:27 pm    Post subject: Reply with quote

Code:
[ENABLE]
aobscan(AOB1,CC 0F 11 80 AC 00 00 00)      //Perform an array of byte scan on this to ensure that this is the only instance that occurs in code; modify if necessary
alloc(newmem,248)
label(returnhere)
registersymbol(AOB1)

newmem:
push eax
mov eax,(float)999999
movd xmm0,eax
pop eax
jmp returnhere

AOB1:
jmp newmem
nop
nop
nop
returnhere:

[DISABLE]
dealloc(newmem)
AOB1:
movss [eax+000000AC],xmm0
unregistersymbol(AOB1)
Back to top
View user's profile Send private message
kik4444
Expert Cheater
Reputation: 0

Joined: 07 Sep 2013
Posts: 120
Location: Bulgaria

PostPosted: Sat Dec 21, 2013 9:57 am    Post subject: Reply with quote

I tried this code on the same game after studying Geri's tutorial, and when I try to activate it, CE freezes for a few seconds and refuses to activate the code.
Code:
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
label(test)
registersymbol(test)
aobscan(aob1,CC 0F 11 80 AC 00 00 00)

newmem:

push eax
mov eax,(float)999999
movd xmm0,eax
pop eax

originalcode:
movss [eax+000000AC],xmm0

exit:
jmp returnhere

aob1:
test:
jmp newmem
nop
nop
nop
returnhere:


 
 
[DISABLE]
dealloc(newmem)
test:
db CC 0F 11 80 AC 00 00 00
unregistersymbol(test)

_________________
Silence will fall when the question is asked...
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sat Dec 21, 2013 11:18 am    Post subject: Reply with quote

Code:
[ENABLE]
alloc(newmem,248)
label(returnhere)
label(originalcode)
registersymbol(aob1)
aobscan(aob1,CC 0F 11 80 AC 00 00 00)    //You must check this (make sure 'writable' box is filled-in with solid square) to ensure that there are no other instances occurring in code

newmem:
push eax
mov eax,(float)999999
movd xmm0,eax
pop eax

originalcode:
movss [eax+000000AC],xmm0
jmp returnhere

aob1:
jmp newmem
nop
nop
nop
returnhere:

[DISABLE]
dealloc(newmem)
aob1:
db CC 0F 11 80 AC 00 00 00

unregistersymbol(aob1)
Back to top
View user's profile Send private message
kik4444
Expert Cheater
Reputation: 0

Joined: 07 Sep 2013
Posts: 120
Location: Bulgaria

PostPosted: Sat Dec 21, 2013 11:51 am    Post subject: Reply with quote

I tried just pasting your entire code that you posted, and the same things happens - CE freezes for a few seconds, after which it unfreezes without the code activating. And I tried doing an AOB search with this:

CC 0F 11 80 AC 00 00 00 * * * * * * * * * * * * * * * *

and I made sure that WRITABLE and EXECUTABLE had a square in them, after scanning for 2 seconds, it shows up with 0 addresses

ALSO, not sure if this matters, but I'm using CE 6.3 so is this code example for the usual code injection, or for the new AOB injection in the 6.4 beta, which I still don't have?

EDIT: Just noticed something. Have the bytes changed? Cause I tried searching for those even without the stars, then I tried searching for them in the memory with and without the stars and nothing showed up. Have the bytes changed or something? Cause I'm pretty sure that the last time I searched for them (which was the previous time I booted the game up) they were there, now nothing. Is it possible for bytes to change? Cause I know that SOME game updates change the bytes, but I haven't updated the game or edited it in any way.

_________________
Silence will fall when the question is asked...
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sat Dec 21, 2013 12:03 pm    Post subject: Reply with quote

Do an AOB scan for this:

CC 0F 11 80 AC 00 00 00

You should have at least 1 result, assuming you did everything right. (Make sure you haven't altered any other settings - such as your search range)

EDIT:
In memory viewer, if you right-click and select 'go to address', and paste this in:

"StateOfDecay.exe"+1112A0F

Is the instruction correct? If so, highlight it, select tools/auto assemble, template/cheat table framework code/template/code injection etc., and check to see that your script is set up correctly. Check to see that this is the same:

//Alt: db CC 0F 11 80 AC 00 00 00
Back to top
View user's profile Send private message
kik4444
Expert Cheater
Reputation: 0

Joined: 07 Sep 2013
Posts: 120
Location: Bulgaria

PostPosted: Sat Dec 21, 2013 3:33 pm    Post subject: Reply with quote

EDIT: ok, did it like this
Code:
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
registersymbol(aob1)
aobscan(aob1,F3 0F 11 80 AC 00 00 00 F3 0F 10 44 24 08 F3 0F 11 80 B0 00 00 00 C3 CC)

newmem:

push eax
mov eax,(float)999999999
movd xmm0,eax
pop eax
jmp returnhere

originalcode:
movss [eax+000000AC],xmm0

exit:
jmp returnhere

aob1:
jmp newmem
nop
nop
nop
returnhere:


 
 
[DISABLE]
dealloc(newmem)
aob1:
db F3 0F 11 80 AC 00 00 00

unregistersymbol(aob1)

it works perfectly now
My next question is: How can this be used to (for example) spawn items in games?
Also on a sidenote: How do I integrate speedhack as an option? For example 1 option increases speed hack, 1 decreases it and one sets it to normal?

_________________
Silence will fall when the question is asked...
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Sat Dec 21, 2013 5:51 pm    Post subject: Reply with quote

To be sure, close the game and close out cheat engine, completely...run the game and re-open cheat engine...try to search for your AOB (do not enable script unless AOB is found by a manual search). If you can't find your AOB, search for the short version:

F3 0F 11 80 AC 00 00 00

If that doesn't work, then I believe you may be dealing with an encrypted target process.

By the way:

Code:
newmem:

push eax
mov eax,(float)999999999
movd xmm0,eax
pop eax
jmp returnhere

originalcode:
movss [eax+000000AC],xmm0


Your originalcode is not getting executed here.


EDIT:
You appear to have revised your post. Is it working now? What happened?

EDIT2:
You can integrate the speed hack function by using an LUA script. Alternatively, you can try looking for the value in the game code that handles game speed.
Back to top
View user's profile Send private message
kik4444
Expert Cheater
Reputation: 0

Joined: 07 Sep 2013
Posts: 120
Location: Bulgaria

PostPosted: Sat Dec 21, 2013 5:58 pm    Post subject: Reply with quote

Yeah, I forgot that closing CE while the cheat is running DOESN'T actually stop the cheat as well, so when I restarted CE and started it again, I couldn't find the bytes, cause the previous cheat was still running so the bytes weren't the same as they were when it WASN'T running, but anyways I got it all sorted out now.

Can you show me an example of speedhack running in LUA as an option?

And how can AOB be used to hack things that are usually not hackable via searching for a value? Things like the price of an item in a game where you buy stuff, or backpack space? I know there's a really big State Of Decay CT trainer with stuff like backpack space as an option. How do you do that? Cause in most games (even tho you can swap backpacks for more room) backpack space is static and there's no way to change it, so how do you go about actually finding the code that's used to change backpack space? I know Ultimap is very useful for some of these things, but I have an AMD CPU, so Ultimap isn't really an option for me.

_________________
Silence will fall when the question is asked...
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