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 


Need some help with Auto Assemble GodMode

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

Joined: 19 Jun 2013
Posts: 12

PostPosted: Mon Jun 24, 2013 1:01 am    Post subject: Need some help with Auto Assemble GodMode Reply with quote

So I'm a noob here, i don't know very much about auto assembler but i would like to learn about it because it seems very useful.

Alright so lets say i have and address 018BF900 (CoDWaW.exe+14BF900) and i want to make it so the game cant write anything to the address but i would like the disable part to enable the game to write to the address again, Something like this:
Code:
//Enable (disable games ability to write to address.)
set Saved_Code == (mov [edi+20B8])
set 018BF900 == change of nop

//Disable (Allow game to write to address again.)
set 018BF900 == (Value Of Saved_Code)

like i said, im a super noob, but this should basically explain what i want to know. (hopefully.)


Last edited by Renard10177 on Mon Jun 24, 2013 1:30 am; edited 2 times in total
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Mon Jun 24, 2013 1:20 am    Post subject: Reply with quote

You just want to be able to enable/disable the nop'ing of a particular instruction?

Right-click the address in your cheat table, select 'find what writes...'
In the debugger window, at least one instruction should appear as soon as the value changes. Hit the 'stop' button. Highlight the instruction and view in disassembler. In disassembler, with the instruction highlighted, select 'tools' from the drop-down menu. Click on 'auto assemble'. In the auto assemble window, click on template and select cheat table framework code. Click on template again, and select code injection. Revise the code as you like, and click on 'file' from the drop-down menu...select assign to current cheat table.
Back to top
View user's profile Send private message
Renard10177
Newbie cheater
Reputation: 0

Joined: 19 Jun 2013
Posts: 12

PostPosted: Mon Jun 24, 2013 1:39 am    Post subject: Reply with quote

GNIREENIGNE wrote:
You just want to be able to enable/disable the nop'ing of a particular instruction?

Right-click the address in your cheat table, select 'find what writes...'
In the debugger window, at least one instruction should appear as soon as the value changes. Hit the 'stop' button. Highlight the instruction and view in disassembler. In disassembler, with the instruction highlighted, select 'tools' from the drop-down menu. Click on 'auto assemble'. In the auto assemble window, click on template and select cheat table framework code. Click on template again, and select code injection. Revise the code as you like, and click on 'file' from the drop-down menu...select assign to current cheat table.

didnt work, this is the script it made, and i know its the right address because freezing it and changing it in cheat engine without auto assemble works just fine
Code:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

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

originalcode:
mov [edi+000020B8],esi

exit:
jmp returnhere

"CoDWaW.exe"+E9D97:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"CoDWaW.exe"+E9D97:
mov [edi+000020B8],esi
//Alt: db 89 B7 B8 20 00 00
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 471

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

PostPosted: Mon Jun 24, 2013 3:59 am    Post subject: Reply with quote

Your code doesn't do anything, it still calls mov [edi+000020B8],esi

You need to add in some code that checks if edi+20b8 is your health or not (because most likely this code also writes health to enemies), and if it is, jump to exit

_________________
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
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Mon Jun 24, 2013 5:07 am    Post subject: Reply with quote

Renard10177 wrote:
GNIREENIGNE wrote:
You just want to be able to enable/disable the nop'ing of a particular instruction?

Right-click the address in your cheat table, select 'find what writes...'
In the debugger window, at least one instruction should appear as soon as the value changes. Hit the 'stop' button. Highlight the instruction and view in disassembler. In disassembler, with the instruction highlighted, select 'tools' from the drop-down menu. Click on 'auto assemble'. In the auto assemble window, click on template and select cheat table framework code. Click on template again, and select code injection. Revise the code as you like, and click on 'file' from the drop-down menu...select assign to current cheat table.

didnt work, this is the script it made, and i know its the right address because freezing it and changing it in cheat engine without auto assemble works just fine
Code:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

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

originalcode:
mov [edi+000020B8],esi

exit:
jmp returnhere

"CoDWaW.exe"+E9D97:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"CoDWaW.exe"+E9D97:
mov [edi+000020B8],esi
//Alt: db 89 B7 B8 20 00 00


Very Happy You didn't revise your code, as I suggested.

Try this:


Code:
[ENABLE]

alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
jmp returnhere

originalcode:
mov [edi+000020B8],esi
jmp returnhere

"CoDWaW.exe"+E9D97:
jmp newmem
nop
returnhere:
 
[DISABLE]

dealloc(newmem)
"CoDWaW.exe"+E9D97:
mov [edi+000020B8],esi


I left the original code in there in case you need to provide a conditional jump, as Dark Byte mentioned.
Back to top
View user's profile Send private message
Renard10177
Newbie cheater
Reputation: 0

Joined: 19 Jun 2013
Posts: 12

PostPosted: Mon Jun 24, 2013 2:26 pm    Post subject: Reply with quote

GNIREENIGNE wrote:
Renard10177 wrote:
GNIREENIGNE wrote:
You just want to be able to enable/disable the nop'ing of a particular instruction?

Right-click the address in your cheat table, select 'find what writes...'
In the debugger window, at least one instruction should appear as soon as the value changes. Hit the 'stop' button. Highlight the instruction and view in disassembler. In disassembler, with the instruction highlighted, select 'tools' from the drop-down menu. Click on 'auto assemble'. In the auto assemble window, click on template and select cheat table framework code. Click on template again, and select code injection. Revise the code as you like, and click on 'file' from the drop-down menu...select assign to current cheat table.

didnt work, this is the script it made, and i know its the right address because freezing it and changing it in cheat engine without auto assemble works just fine
Code:
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

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

originalcode:
mov [edi+000020B8],esi

exit:
jmp returnhere

"CoDWaW.exe"+E9D97:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"CoDWaW.exe"+E9D97:
mov [edi+000020B8],esi
//Alt: db 89 B7 B8 20 00 00


Very Happy You didn't revise your code, as I suggested.

Try this:


Code:
[ENABLE]

alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
jmp returnhere

originalcode:
mov [edi+000020B8],esi
jmp returnhere

"CoDWaW.exe"+E9D97:
jmp newmem
nop
returnhere:
 
[DISABLE]

dealloc(newmem)
"CoDWaW.exe"+E9D97:
mov [edi+000020B8],esi


I left the original code in there in case you need to provide a conditional jump, as Dark Byte mentioned.

Thanks! it works perfectly, as i said, im new to the auto assembler and nop'ing so i have no idea what im doing, hopefully, i can learn something from this and apply it to other games. so ill have to do is assign newmem to jmp returnhere?
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Mon Jun 24, 2013 3:28 pm    Post subject: Reply with quote

Basically, newmem is where you would put your new code. The original code, which was changing your value, was: mov [edi+000020B8],esi

All we did was jump back to the game without executing the original code. You could have done this:

newmem:
nop
jmp returnhere

but, what we did is essentially the same thing; no operation is performed, so the address does not change. Very Happy
Back to top
View user's profile Send private message
Renard10177
Newbie cheater
Reputation: 0

Joined: 19 Jun 2013
Posts: 12

PostPosted: Mon Jun 24, 2013 5:25 pm    Post subject: Reply with quote

GNIREENIGNE wrote:
Basically, newmem is where you would put your new code. The original code, which was changing your value, was: mov [edi+000020B8],esi

All we did was jump back to the game without executing the original code. You could have done this:

newmem:
nop
jmp returnhere

but, what we did is essentially the same thing; no operation is performed, so the address does not change. Very Happy

when i tried this on other games, it made the game crash.


Last edited by Renard10177 on Mon Jun 24, 2013 5:43 pm; edited 1 time in total
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Mon Jun 24, 2013 5:38 pm    Post subject: Reply with quote

Depends on the game. You can test it before you even bother with a script. All you do to test, is right-click on the instruction in memory viewer and select 'replace with code that does nothing'. The same thing can be done from the debugger window, for testing purposes. If the game has some integrity check, anti-cheat or other protection, it may crash immediately, or after some time...regardless if your code is good or not.
Back to top
View user's profile Send private message
Renard10177
Newbie cheater
Reputation: 0

Joined: 19 Jun 2013
Posts: 12

PostPosted: Mon Jun 24, 2013 6:11 pm    Post subject: Reply with quote

GNIREENIGNE wrote:
Depends on the game. You can test it before you even bother with a script. All you do to test, is right-click on the instruction in memory viewer and select 'replace with code that does nothing'. The same thing can be done from the debugger window, for testing purposes. If the game has some integrity check, anti-cheat or other protection, it may crash immediately, or after some time...regardless if your code is good or not.

i tested it and even on the games that DONT have protection still seem to crash, ugh this is extremely frustrating, it does this on every game, someone is doing something wrong (and its probably me) it dosent make any sense, im doing every thing you guys tell me , like i said, this is my first time with the assembler, i didnt understand cheat engine's built in auto assembler tutorial and i still barely understand most of other peoples scripts Sad
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Mon Jun 24, 2013 6:49 pm    Post subject: Reply with quote

It takes time to learn. Don't give up and you'll get it. Part of the enjoyment for me is solving the puzzle. If everything was easy, I probably wouldn't like it much.

To be safe, start by only NOP'ing instructions that 'write' to the address. Once you have learned more, you can work on instructions that 'access' the address, to write better cheats.
Back to top
View user's profile Send private message
Renard10177
Newbie cheater
Reputation: 0

Joined: 19 Jun 2013
Posts: 12

PostPosted: Mon Jun 24, 2013 7:56 pm    Post subject: Reply with quote

GNIREENIGNE wrote:
It takes time to learn. Don't give up and you'll get it. Part of the enjoyment for me is solving the puzzle. If everything was easy, I probably wouldn't like it much.

To be safe, start by only NOP'ing instructions that 'write' to the address. Once you have learned more, you can work on instructions that 'access' the address, to write better cheats.

k, i'll take your advice, hopefully one of these days i'll get a hang of this "toggle-able" NoP ive been seeing around so much, ive already made a few generic trainers with just the simple freezing and setting values but i haven't got a chance to upload them yet
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