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 


freeze bointer by autoassembly

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
it-ty
Newbie cheater
Reputation: 0

Joined: 05 Jun 2014
Posts: 22

PostPosted: Sat Mar 14, 2015 11:02 pm    Post subject: freeze bointer by autoassembly Reply with quote

Hi. every body. problem about script autoassembly
i want edit code freeze bointer by autoassembly
Help me Plzz
Back to top
View user's profile Send private message
justa_dude
Grandmaster Cheater
Reputation: 23

Joined: 29 Jun 2010
Posts: 891

PostPosted: Sat Mar 14, 2015 11:07 pm    Post subject: Reply with quote

Do the tutorial, there's an exercise that teaches you to do just that.
_________________
A nagy kapu mellett, mindig van egy kis kapu.
----------------------
Come on...
Back to top
View user's profile Send private message
it-ty
Newbie cheater
Reputation: 0

Joined: 05 Jun 2014
Posts: 22

PostPosted: Sat Mar 14, 2015 11:11 pm    Post subject: Reply with quote

justa_dude wrote:
Do the tutorial, there's an exercise that teaches you to do just that.


Tutorial
Do you have a code sample
Back to top
View user's profile Send private message
hhhuut
Grandmaster Cheater
Reputation: 6

Joined: 08 Feb 2015
Posts: 607

PostPosted: Sun Mar 15, 2015 6:05 am    Post subject: Reply with quote

Code:
alloc(PTR,512)
label(invalid)

PTR:
pushad
//Follow Pointer
mov eax,["Game.exe"+Offset0]
or eax,eax
je short invalid    //jump if invalid Pointer
mov eax,[eax+Offset1]
or eax,eax
je short invalid
mov eax,[eax+Offset2]
or eax,eax
je short invalid
mov eax,[eax+Offset3]
or eax,eax
je short invalid

//[eax] now contains the value you want to read/edit

invalid:
push #50     //50ms Timeout
call sleep
popad
jmp PTR

createthread(PTR)


Do you mean something like this? It should work (haven't explicitly tested it) ...
Back to top
View user's profile Send private message
it-ty
Newbie cheater
Reputation: 0

Joined: 05 Jun 2014
Posts: 22

PostPosted: Sun Mar 15, 2015 7:49 am    Post subject: Reply with quote

hhhuut wrote:
Code:
alloc(PTR,512)
label(invalid)

PTR:
pushad
//Follow Pointer
mov eax,["Game.exe"+Offset0]
or eax,eax
je short invalid    //jump if invalid Pointer
mov eax,[eax+Offset1]
or eax,eax
je short invalid
mov eax,[eax+Offset2]
or eax,eax
je short invalid
mov eax,[eax+Offset3]
or eax,eax
je short invalid

//[eax] now contains the value you want to read/edit

invalid:
push #50     //50ms Timeout
call sleep
popad
jmp PTR

createthread(PTR)


Do you mean something like this? It should work (haven't explicitly tested it) ...


I tested code. It error code needs enable,disable
Back to top
View user's profile Send private message
hhhuut
Grandmaster Cheater
Reputation: 6

Joined: 08 Feb 2015
Posts: 607

PostPosted: Sun Mar 15, 2015 7:54 am    Post subject: Reply with quote

Yeah sorry, forgot those ...

Code:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(PTR,512)
label(invalid)

PTR:
pushad
//Follow Pointer
mov eax,["Game.exe"+Offset0]
or eax,eax
je short invalid    //jump if invalid Pointer
mov eax,[eax+Offset1]
or eax,eax
je short invalid
mov eax,[eax+Offset2]
or eax,eax
je short invalid
mov eax,[eax+Offset3]
or eax,eax
je short invalid

//[eax] now contains the value you want to read/edit

invalid:
push #50     //50ms Timeout
call sleep
popad
jmp PTR

createthread(PTR)
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(PTR)
Back to top
View user's profile Send private message
it-ty
Newbie cheater
Reputation: 0

Joined: 05 Jun 2014
Posts: 22

PostPosted: Sun Mar 15, 2015 11:58 am    Post subject: Reply with quote

@hhhuut
I tested this code.It error
Help me check this code plzz
Code:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(PTR,512)
label(invalid)

PTR:
pushad
//Follow Pointer
mov eax,["solitaire.exe"+0008E528]
or eax,eax
je short invalid    //jump if invalid Pointer
mov eax,[eax+78c]
or eax,eax
je short invalid
mov eax,[eax+2d0]
or eax,eax
je short invalid
mov eax,[eax+c0]
or eax,eax
je short invalid
mov eax,[eax+470]
or eax,eax
je short invalid
mov eax,[eax+308]
or eax,eax
je short invalid

//[eax] now contains the value you want to read/edit

invalid:
push #50     //50ms Timeout
call sleep
popad
jmp PTR

createthread(PTR)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(PTR)
Back to top
View user's profile Send private message
Zanzer
I post too much
Reputation: 126

Joined: 09 Jun 2013
Posts: 3278

PostPosted: Sun Mar 15, 2015 12:16 pm    Post subject: Reply with quote

Instructions pushad and popad are not available for 64-bit programs.
Looking at your code, you should be able to get away with push eax and pop eax.
Back to top
View user's profile Send private message
hhhuut
Grandmaster Cheater
Reputation: 6

Joined: 08 Feb 2015
Posts: 607

PostPosted: Sun Mar 15, 2015 12:35 pm    Post subject: Reply with quote

If it's a 64bit exe you can use pusha/popa or, as Zanzer proposes, just push one register onto the stack, but be careful, push/pop eax won't work on 64bit either. You'll have to use push/pop rax.
Back to top
View user's profile Send private message
it-ty
Newbie cheater
Reputation: 0

Joined: 05 Jun 2014
Posts: 22

PostPosted: Sun Mar 15, 2015 9:32 pm    Post subject: Reply with quote

Instuctions push,pop or pushad,popad then no work too. Sad Sad Sad
Back to top
View user's profile Send private message
hhhuut
Grandmaster Cheater
Reputation: 6

Joined: 08 Feb 2015
Posts: 607

PostPosted: Mon Mar 16, 2015 4:05 am    Post subject: Reply with quote

Well, push/pop alone won't work, you always have to push a register or value onto the stack.

So:

In case your game (Solitaire) is 64bit try push/pop rax.
If it's 32bit then use push/pop eax.

One of those commands will work...
Back to top
View user's profile Send private message
it-ty
Newbie cheater
Reputation: 0

Joined: 05 Jun 2014
Posts: 22

PostPosted: Mon Mar 16, 2015 6:26 am    Post subject: Reply with quote

hhhuut wrote:
Well, push/pop alone won't work, you always have to push a register or value onto the stack.

So:

In case your game (Solitaire) is 64bit try push/pop rax.
If it's 32bit then use push/pop eax.

One of those commands will work...


System OS me 's 32bit. but I think the code wrong
I sheach google meet this code
Code:
alloc(Threadproc, 1024)
alloc(DoFreeze, 4)
label(EndThread)
label(Loopy)

DoFreeze:
dd 1

Threadproc:
pushad
Loopy:
cmp dword [DoFreeze], 0
je EndThread
mov eax, [pointer]
mov [eax+offset], valuetofreezeat
push FreezeInterval
call Sleep
jmp Loopy
EndThread:
popad
retn 4


Can this code work?
Back to top
View user's profile Send private message
hhhuut
Grandmaster Cheater
Reputation: 6

Joined: 08 Feb 2015
Posts: 607

PostPosted: Mon Mar 16, 2015 12:53 pm    Post subject: Reply with quote

Well, there's no big difference between my code and the one you found except that your code will crash if you try to read a zero pointer...

So if you have a 32bit OS, what error do you get when trying to add/run the script?

Code:
 [ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(PTR,512)
label(invalid)

PTR:
pushad
//Follow Pointer
mov eax,["solitaire.exe"+0008E528]
or eax,eax
je short invalid    //jump if invalid Pointer
mov eax,[eax+78c]
or eax,eax
je short invalid
mov eax,[eax+2d0]
or eax,eax
je short invalid
mov eax,[eax+c0]
or eax,eax
je short invalid
mov eax,[eax+470]
or eax,eax
je short invalid
mov eax,[eax+308]
or eax,eax
je short invalid

//[eax] now contains the value you want to read/edit

invalid:
push #50     //50ms Timeout
call sleep
popad
jmp PTR

createthread(PTR)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(PTR)
Back to top
View user's profile Send private message
it-ty
Newbie cheater
Reputation: 0

Joined: 05 Jun 2014
Posts: 22

PostPosted: Thu Mar 19, 2015 7:38 am    Post subject: Reply with quote

hhhuut wrote:
Well, there's no big difference between my code and the one you found except that your code will crash if you try to read a zero pointer...

So if you have a 32bit OS, what error do you get when trying to add/run the script?

Code:
 [ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(PTR,512)
label(invalid)

PTR:
pushad
//Follow Pointer
mov eax,["solitaire.exe"+0008E528]
or eax,eax
je short invalid    //jump if invalid Pointer
mov eax,[eax+78c]
or eax,eax
je short invalid
mov eax,[eax+2d0]
or eax,eax
je short invalid
mov eax,[eax+c0]
or eax,eax
je short invalid
mov eax,[eax+470]
or eax,eax
je short invalid
mov eax,[eax+308]
or eax,eax
je short invalid

//[eax] now contains the value you want to read/edit

invalid:
push #50     //50ms Timeout
call sleep
popad
jmp PTR

createthread(PTR)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(PTR)


Help explain this code plz.
Back to top
View user's profile Send private message
hhhuut
Grandmaster Cheater
Reputation: 6

Joined: 08 Feb 2015
Posts: 607

PostPosted: Thu Mar 19, 2015 2:42 pm    Post subject: Reply with quote

As you can see the code does not only read a pointer once but every 50 milli seconds ...

Code:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(PTR,512)   //Allocate a memory region that is 512Bytes big (should be enough for every pointer)
label(invalid)    //Jump-label

PTR:
pushad     //push/save all general register (ax, bx, cx, dx, si, di, sp, bp (,ip?)) onto the stack
//Follow Pointer
mov eax,["solitaire.exe"+0008E528]   //Copy value from base-address and first offset
or eax,eax          //test if it's a zero pointer (will crash if it is and you try to read from it, so this is for safety reasons)
je short invalid    //jump if invalid Pointer
mov eax,[eax+78c]    //add second offset of the pointer chain
or eax,eax
je short invalid
mov eax,[eax+2d0]    //add third offset
or eax,eax
je short invalid
mov eax,[eax+c0]     //fourth (if there is a forth)
or eax,eax
je short invalid
mov eax,[eax+470]    //fifth ...
or eax,eax
je short invalid
mov eax,[eax+308]   //sixth ...
or eax,eax
je short invalid

//[eax] now contains the value you want to read/edit

invalid:
push #50     //50ms Timeout
call sleep    //will take the last value from the stack and wait as long as this value is high (in our case 50ms)
popad       //pop all general registers now (so that the stack is the same as before our code execution)
jmp PTR    //jump to read the pointer again

createthread(PTR)         //create an own thread for reading the pointer because otherwise the game/application would freeze

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(PTR)


I hope assembler code looks more or less familiar to you ...
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