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 do I use the first address in an AOB...?

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
Telecide
Cheater
Reputation: 0

Joined: 30 Sep 2012
Posts: 42

PostPosted: Sat Apr 02, 2016 1:37 pm    Post subject: How do I use the first address in an AOB...? Reply with quote

to automatically set up the others.

I"m trying to set up a table where about thirty or so addresses follow in 4 byte increments. I have to find the first one manually by the usual scan/change data/next scan method. Once I have that I know the others will be FirstAddress+4, FirstAddress+8, etc.. How do I input the dependent addresses in that format so they will automatically populate whenever I find the first one.

I'm sure I knew how do this at one point but I must have forgot. Sad Thanks guys. Smile
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 Apr 02, 2016 1:43 pm    Post subject: Reply with quote

Use injection. Create a script that will save off the register address, then, just create custom entries in your table with the custom base+offset for all of the values that you want. If you do that, your script will automatically populate all of the addresses, every time, without the need to search, use the pointer scanner or anything else.

For example:

Code:
//Target:  firefox.exe
//Author:  ++METHOS

[ENABLE]

{====================  pointer  ====================}

aobscanmodule(aob_pointer,firefox.exe,8B 4D 08 C6 46 0C 00)
alloc(newmem_pointer,1024,firefox.exe)

label(return_pointer)
label(originalcode_pointer)
label(pointer_address)

registersymbol(aob_pointer)
registersymbol(pointer_address)


newmem_pointer:
push edi
lea edi,[ebp+08]
mov [pointer_address],edi
pop edi

originalcode_pointer:
mov ecx,[ebp+08]
mov byte ptr [esi+0C],00
jmp return_pointer

pointer_address:
dd 0

aob_pointer:
jmp newmem_pointer
db 90 90
return_pointer:


[DISABLE]
dealloc(newmem_pointer)
aob_pointer:
db 8B 4D 08 C6 46 0C 00

unregistersymbol(aob_pointer)
unregistersymbol(pointer_address)


Once the script is activated, add an address to your table, manually...click on the pointer box, and set the base address as pointer_address. After that, copy and paste that pointer address back in to your table. Edit it and add an offset of +4. Repeat those steps, except, make the offset +8, then +C etc. until your table is complete.
Back to top
View user's profile Send private message
Telecide
Cheater
Reputation: 0

Joined: 30 Sep 2012
Posts: 42

PostPosted: Sat Apr 02, 2016 2:05 pm    Post subject: Reply with quote

Thanks! That was fast.

It's starting to ring a bell. I guess now I just have to find where to inject in the code. Idea

Love this forum!
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 Apr 02, 2016 2:07 pm    Post subject: Reply with quote

Once you've found your first value, right-click on it to see what is accessing it. In the new debugger window that pops up, right-click on an empty, white space inside of it, and check to see if opcodes are accessing other addresses...this will show you if any of the instructions that populate are exclusive to the address that you are targeting. For example, if the instruction shows a (1) in the count column, you can use that for your injection location. If all instructions are accessing more than one address, then you'll have to filter them out.
Back to top
View user's profile Send private message
Telecide
Cheater
Reputation: 0

Joined: 30 Sep 2012
Posts: 42

PostPosted: Sat Apr 02, 2016 2:39 pm    Post subject: Reply with quote

Yeah, it's a basically a racial perks screen with radio buttons for each one. So I think the same code runs when you click any of them. And it starts out with nothing selected so you can't really find it without changing some values. That's why I wanted to just set up the first address as a symbol (I think that's what it would) for the others to depend on.
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