[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(INF_OXYGEN,Astro-Win64-Shipping.exe,89 BB 40 01 00 00 85)
alloc(newmem,$1000,"Astro-Win64-Shipping.exe"+1DF9CB)
label(code)
label(return)
label(massiveresources)
label(instantcraftbp)
newmem:
cmp [rbx+000000A8],2E480609 //check if it is resource
je massiveresources //jump to massive resources
cmp [rbx+000000A8],2E480619 //check if it is oxygen
jne code //going down to infinite oxygen, OK
mov [rbx+00000140],(int)277200 //Infinite Oxygen
jmp return
massiveresources:
cmp r15,0//check if it is instacraft
jne instantcraftbp //it's not than don't jump
mov [rbx+00000140],(int)138600 // Massive Resources //else, doing massive resource
jmp return
instantcraftbp:
mov [rbx+00000140],(int)0 //apply 0 to the address value so it will be instant crafting
jmp return
code:
mov [rbx+00000140],edi
jmp return
INF_OXYGEN:
jmp newmem
nop
return:
registersymbol(INF_OXYGEN)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INF_OXYGEN:
db 89 BB 40 01 00 00
unregistersymbol(INF_OXYGEN)
dealloc(newmem)
Astroneer, an instruction is shared with tons of total different address and values.
-
- Table Makers
- Posts: 336
- Joined: Thu Aug 03, 2017 6:19 am
- Reputation: 206
Re: Astroneer, an instruction is shared with tons of total different address and values.
Ok I found another offset that works Here:
-
- Table Makers
- Posts: 336
- Joined: Thu Aug 03, 2017 6:19 am
- Reputation: 206
Re: Astroneer, an instruction is shared with tons of total different address and values.
Also something you can do is this:
Paste this into a text editor and save it as an .CT File, i made it that you can manualy select what cheat you wan't to have activated Have Fun<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="26">
<CheatEntries>
<CheatEntry>
<ID>0</ID>
<Description>"Inf Everthing"</Description>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(INF_OXYGEN,Astro-Win64-Shipping.exe,89 BB 40 01 00 00 85)
alloc(newmem,$1000,"Astro-Win64-Shipping.exe"+1DF9CB)
label(code)
label(return)
label(massiveresources)
label(instantcraftbp)
label(infiniteoxygenflag)
label(massiveresourcesflag)
label(instantcraftbpflag)
registersymbol(infiniteoxygenflag)
registersymbol(massiveresourcesflag)
registersymbol(instantcraftbpflag)
newmem:
cmp [rbx+000000A8],2E480609 //check if it is resource
je massiveresources //jump to massive resources
cmp [rbx+000000A8],2E480619 //check if it is oxygen
jne code //going down to infinite oxygen, OK
cmp [infiniteoxygenflag],1
jne code
mov [rbx+00000140],(int)277200 //Infinite Oxygen
jmp return
massiveresources:
cmp r15,0 //check if it is instacraft
jne instantcraftbp //it's not than don't jump
cmp [massiveresourcesflag],1
jne code
mov [rbx+00000140],(int)138600 // Massive Resources //else, doing massive resource
jmp return
instantcraftbp:
cmp [instantcraftbpflag],1
jne code
mov [rbx+00000140],(int)0 //apply 0 to the address value so it will be instant crafting
jmp return
code:
mov [rbx+00000140],edi
jmp return
infiniteoxygenflag:
dd 0
massiveresourcesflag:
dd 0
instantcraftbpflag:
dd 0
INF_OXYGEN:
jmp newmem
nop
return:
registersymbol(INF_OXYGEN)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INF_OXYGEN:
db 89 BB 40 01 00 00
unregistersymbol(INF_OXYGEN)
dealloc(newmem)
unregistersymbol(infiniteoxygenflag)
unregistersymbol(massiveresourcesflag)
unregistersymbol(instantcraftbpflag)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1</ID>
<Description>"Infinite Oxygen"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="1" RealAddress="7FF645FC00AD"/>
<VariableType>4 Bytes</VariableType>
<Address>infiniteoxygenflag</Address>
</CheatEntry>
<CheatEntry>
<ID>2</ID>
<Description>"Massive Resources"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="1" RealAddress="7FF645FC00B1"/>
<VariableType>4 Bytes</VariableType>
<Address>massiveresourcesflag</Address>
</CheatEntry>
<CheatEntry>
<ID>3</ID>
<Description>"Insta Craft"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="0" RealAddress="7FF645FC00B5"/>
<VariableType>4 Bytes</VariableType>
<Address>instantcraftbpflag</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
<UserdefinedSymbols/>
</CheatTable>
-
- Table Makers
- Posts: 198
- Joined: Sat Mar 04, 2017 1:46 pm
- Reputation: 83
Re: Astroneer, an instruction is shared with tons of total different address and values.
Wow thats a bonus, i have always wanted to learn how to make something like optional cheats, always wonder how to write something like that, learn something new today,Bloodybone wrote: ↑Tue Oct 31, 2017 5:25 pmAlso something you can do is this:
Paste this into a text editor and save it as an .CT File, i made it that you can manualy select what cheat you wan't to have activated Have Fun<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="26">
<CheatEntries>
<CheatEntry>
<ID>0</ID>
<Description>"Inf Everthing"</Description>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(INF_OXYGEN,Astro-Win64-Shipping.exe,89 BB 40 01 00 00 85)
alloc(newmem,$1000,"Astro-Win64-Shipping.exe"+1DF9CB)
label(code)
label(return)
label(massiveresources)
label(instantcraftbp)
label(infiniteoxygenflag)
label(massiveresourcesflag)
label(instantcraftbpflag)
registersymbol(infiniteoxygenflag)
registersymbol(massiveresourcesflag)
registersymbol(instantcraftbpflag)
newmem:
cmp [rbx+000000A8],2E480609 //check if it is resource
je massiveresources //jump to massive resources
cmp [rbx+000000A8],2E480619 //check if it is oxygen
jne code //going down to infinite oxygen, OK
cmp [infiniteoxygenflag],1
jne code
mov [rbx+00000140],(int)277200 //Infinite Oxygen
jmp return
massiveresources:
cmp r15,0 //check if it is instacraft
jne instantcraftbp //it's not than don't jump
cmp [massiveresourcesflag],1
jne code
mov [rbx+00000140],(int)138600 // Massive Resources //else, doing massive resource
jmp return
instantcraftbp:
cmp [instantcraftbpflag],1
jne code
mov [rbx+00000140],(int)0 //apply 0 to the address value so it will be instant crafting
jmp return
code:
mov [rbx+00000140],edi
jmp return
infiniteoxygenflag:
dd 0
massiveresourcesflag:
dd 0
instantcraftbpflag:
dd 0
INF_OXYGEN:
jmp newmem
nop
return:
registersymbol(INF_OXYGEN)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INF_OXYGEN:
db 89 BB 40 01 00 00
unregistersymbol(INF_OXYGEN)
dealloc(newmem)
unregistersymbol(infiniteoxygenflag)
unregistersymbol(massiveresourcesflag)
unregistersymbol(instantcraftbpflag)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1</ID>
<Description>"Infinite Oxygen"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="1" RealAddress="7FF645FC00AD"/>
<VariableType>4 Bytes</VariableType>
<Address>infiniteoxygenflag</Address>
</CheatEntry>
<CheatEntry>
<ID>2</ID>
<Description>"Massive Resources"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="1" RealAddress="7FF645FC00B1"/>
<VariableType>4 Bytes</VariableType>
<Address>massiveresourcesflag</Address>
</CheatEntry>
<CheatEntry>
<ID>3</ID>
<Description>"Insta Craft"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="0" RealAddress="7FF645FC00B5"/>
<VariableType>4 Bytes</VariableType>
<Address>instantcraftbpflag</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
<UserdefinedSymbols/>
</CheatTable>
I will look into it, thank you very very much
Right now im not infront of the pc,. Will check it out later
Btw how do u write those all drop down menu code? You wrote them all manually? Or is there template in CE assembly section?
I would like to learn this if there are more information on this
-
- Table Makers
- Posts: 336
- Joined: Thu Aug 03, 2017 6:19 am
- Reputation: 206
Re: Astroneer, an instruction is shared with tons of total different address and values.
I wrote them manually its actualy pretty easy if you know how tosquall0833 wrote: ↑Tue Oct 31, 2017 8:23 pmWow thats a bonus, i have always wanted to learn how to make something like optional cheats, always wonder how to write something like that, learn something new today,Bloodybone wrote: ↑Tue Oct 31, 2017 5:25 pmAlso something you can do is this:
Paste this into a text editor and save it as an .CT File, i made it that you can manualy select what cheat you wan't to have activated Have Fun<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="26">
<CheatEntries>
<CheatEntry>
<ID>0</ID>
<Description>"Inf Everthing"</Description>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(INF_OXYGEN,Astro-Win64-Shipping.exe,89 BB 40 01 00 00 85)
alloc(newmem,$1000,"Astro-Win64-Shipping.exe"+1DF9CB)
label(code)
label(return)
label(massiveresources)
label(instantcraftbp)
label(infiniteoxygenflag)
label(massiveresourcesflag)
label(instantcraftbpflag)
registersymbol(infiniteoxygenflag)
registersymbol(massiveresourcesflag)
registersymbol(instantcraftbpflag)
newmem:
cmp [rbx+000000A8],2E480609 //check if it is resource
je massiveresources //jump to massive resources
cmp [rbx+000000A8],2E480619 //check if it is oxygen
jne code //going down to infinite oxygen, OK
cmp [infiniteoxygenflag],1
jne code
mov [rbx+00000140],(int)277200 //Infinite Oxygen
jmp return
massiveresources:
cmp r15,0 //check if it is instacraft
jne instantcraftbp //it's not than don't jump
cmp [massiveresourcesflag],1
jne code
mov [rbx+00000140],(int)138600 // Massive Resources //else, doing massive resource
jmp return
instantcraftbp:
cmp [instantcraftbpflag],1
jne code
mov [rbx+00000140],(int)0 //apply 0 to the address value so it will be instant crafting
jmp return
code:
mov [rbx+00000140],edi
jmp return
infiniteoxygenflag:
dd 0
massiveresourcesflag:
dd 0
instantcraftbpflag:
dd 0
INF_OXYGEN:
jmp newmem
nop
return:
registersymbol(INF_OXYGEN)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INF_OXYGEN:
db 89 BB 40 01 00 00
unregistersymbol(INF_OXYGEN)
dealloc(newmem)
unregistersymbol(infiniteoxygenflag)
unregistersymbol(massiveresourcesflag)
unregistersymbol(instantcraftbpflag)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1</ID>
<Description>"Infinite Oxygen"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="1" RealAddress="7FF645FC00AD"/>
<VariableType>4 Bytes</VariableType>
<Address>infiniteoxygenflag</Address>
</CheatEntry>
<CheatEntry>
<ID>2</ID>
<Description>"Massive Resources"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="1" RealAddress="7FF645FC00B1"/>
<VariableType>4 Bytes</VariableType>
<Address>massiveresourcesflag</Address>
</CheatEntry>
<CheatEntry>
<ID>3</ID>
<Description>"Insta Craft"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
<LastState Value="0" RealAddress="7FF645FC00B5"/>
<VariableType>4 Bytes</VariableType>
<Address>instantcraftbpflag</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
<UserdefinedSymbols/>
</CheatTable>
I will look into it, thank you very very much
Right now im not infront of the pc,. Will check it out later
Btw how do u write those all drop down menu code? You wrote them all manually? Or is there template in CE assembly section?
I would like to learn this if there are more information on this
Edit: Also if you wan't to learn something like this you can look up tutorials like "cheat engine create your own flags"
-
- Table Makers
- Posts: 198
- Joined: Sat Mar 04, 2017 1:46 pm
- Reputation: 83
Re: Astroneer, an instruction is shared with tons of total different address and values.
hi again bloodybone.Bloodybone wrote: ↑Tue Oct 31, 2017 9:20 pmI wrote them manually its actualy pretty easy if you know how tosquall0833 wrote: ↑Tue Oct 31, 2017 8:23 pmWow thats a bonus, i have always wanted to learn how to make something like optional cheats, always wonder how to write something like that, learn something new today,Bloodybone wrote: ↑Tue Oct 31, 2017 5:25 pmAlso something you can do is this:
Paste this into a text editor and save it as an .CT File, i made it that you can manualy select what cheat you wan't to have activated Have Fun
I will look into it, thank you very very much
Right now im not infront of the pc,. Will check it out later
Btw how do u write those all drop down menu code? You wrote them all manually? Or is there template in CE assembly section?
I would like to learn this if there are more information on this
Edit: Also if you wan't to learn something like this you can look up tutorials like "cheat engine create your own flags"
just want to make sure something
cmp r15,0
jne instantcraftbp
i'm still dont really get this part,
when you're crafting something on backpack, it triggers instruction, its r15 is not 0 so it jumps to instantcraftbp:
but when you're harvesting resource,triggers instruction and its r15 is 000000001 isn't that also jump to instantcraftbp? why is it not jumping and proceed massiveresource when it's not equal to 0? then it works as intended
why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?
-
- Table Makers
- Posts: 336
- Joined: Thu Aug 03, 2017 6:19 am
- Reputation: 206
Re: Astroneer, an instruction is shared with tons of total different address and values.
So the instacraft adress at that point in the r15 register has some "random" number so if it is not 0, what it is not than jump but the massive recources adress at that point has 0 in the r15 register so don't jump because its 0.squall0833 wrote: ↑Wed Nov 01, 2017 6:39 pmhi again bloodybone.Bloodybone wrote: ↑Tue Oct 31, 2017 9:20 pmI wrote them manually its actualy pretty easy if you know how tosquall0833 wrote: ↑Tue Oct 31, 2017 8:23 pm
Wow thats a bonus, i have always wanted to learn how to make something like optional cheats, always wonder how to write something like that, learn something new today,
I will look into it, thank you very very much
Right now im not infront of the pc,. Will check it out later
Btw how do u write those all drop down menu code? You wrote them all manually? Or is there template in CE assembly section?
I would like to learn this if there are more information on this
Edit: Also if you wan't to learn something like this you can look up tutorials like "cheat engine create your own flags"
just want to make sure something
cmp r15,0
jne instantcraftbp
i'm still dont really get this part,
when you're crafting something on backpack, it triggers instruction, its r15 is not 0 so it jumps to instantcraftbp:
but when you're harvesting resource,triggers instruction and its r15 is 000000001 isn't that also jump to instantcraftbp? why is it not jumping and proceed massiveresource when it's not equal to 0? then it works as intended
why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?
-
- Table Makers
- Posts: 198
- Joined: Sat Mar 04, 2017 1:46 pm
- Reputation: 83
Re: Astroneer, an instruction is shared with tons of total different address and values.
Ahh.. i see,Bloodybone wrote: ↑Wed Nov 01, 2017 7:51 pmSo the instacraft adress at that point in the r15 register has some "random" number so if it is not 0, what it is not than jump but the massive recources adress at that point has 0 in the r15 register so don't jump because its 0.squall0833 wrote: ↑Wed Nov 01, 2017 6:39 pmhi again bloodybone.Bloodybone wrote: ↑Tue Oct 31, 2017 9:20 pmI wrote them manually its actualy pretty easy if you know how to
Edit: Also if you wan't to learn something like this you can look up tutorials like "cheat engine create your own flags"
just want to make sure something
cmp r15,0
jne instantcraftbp
i'm still dont really get this part,
when you're crafting something on backpack, it triggers instruction, its r15 is not 0 so it jumps to instantcraftbp:
but when you're harvesting resource,triggers instruction and its r15 is 000000001 isn't that also jump to instantcraftbp? why is it not jumping and proceed massiveresource when it's not equal to 0? then it works as intended
why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?
when the "find what writes to this address" that only shows the offset info from very first count of the instruction(offset info will not refresh), those do not mean are the same values, it could be other random numbers when instruction occur many times so it wont work in the cmp statement
r15 = is the one that is always 1 and thats why it works, the cheats now work but it cause few problems like soil cannot collect when instantcraftbp activated, or the building time for structures freezed when massive resources is active, i just fix them by adding a little bit more cmp value for structure building time and soil collect
massiveResources:
cmp r15,0
jne instaBPcraft
cmp rbp,3 //check and fix several game issues caused by cheats above (rbp for structure building time is static 3)
je code
mov [rbx+00000140],(int)138600 // Massive Resources
jmp return
this fixes all the other problem caused by the cheats, it works because the rbp i use is always the "3" right? just like the r15 = 1
now i get it, how these codes and instructions work in games
also i'm giving up doing instant soil collection, it just dont work properly, looks like there's some instruction behind it to "activate" soil canister to allow soil collecting
when i placed like 4 canisters and active soil insta fill cheat, it only fill 1 or 2, do not fill the rest of the canister unless i disable cheat
now im learning to write flag codes for drop menu , thanks for all the help, really appreciate
one question about registersymbol()
if i use it to contain both address value, i need to alloc memory for that right?
lets say if i need to show health value, i need to do following:
alloc(health,4)
registersymbol(health)
health:
dd 0
somewhere
mov [health],edx (if the edx is address of the health)
unregistersymbol(health)
in table:
[health] will show address and value
in ur flag code, there is no alloc for those symbols, because you only need those symbol to contain a value without any address?
and do i need to dealloc(health) if i use globalalloc(health,4) instead?
Re: Astroneer, an instruction is shared with tons of total different address and values.
Yeah, they're 'flags' i.e. boolean values (true or false, 1 or 0), I didn't read all of his AA script, but presumably it checks whether those flags are 1 (on) or 0 (off) to determine which cheats to activate.squall0833 wrote: ↑Wed Nov 01, 2017 8:10 pmin ur flag code, there is no alloc for those symbols, because you only need those symbol to contain a value without any address?
and do i need to dealloc(health) if i use globalalloc(health,4) instead?
Also yes, you need to deallocate any memory you've allocated.
-
- Table Makers
- Posts: 336
- Joined: Thu Aug 03, 2017 6:19 am
- Reputation: 206
Re: Astroneer, an instruction is shared with tons of total different address and values.
Ok first of nice to hear and no you don't have to alloc them because newmem is already allocated and as long as the "health: dd 0"squall0833 wrote: ↑Wed Nov 01, 2017 8:10 pmAhh.. i see,Bloodybone wrote: ↑Wed Nov 01, 2017 7:51 pmSo the instacraft adress at that point in the r15 register has some "random" number so if it is not 0, what it is not than jump but the massive recources adress at that point has 0 in the r15 register so don't jump because its 0.squall0833 wrote: ↑Wed Nov 01, 2017 6:39 pm
hi again bloodybone.
just want to make sure something
cmp r15,0
jne instantcraftbp
i'm still dont really get this part,
when you're crafting something on backpack, it triggers instruction, its r15 is not 0 so it jumps to instantcraftbp:
but when you're harvesting resource,triggers instruction and its r15 is 000000001 isn't that also jump to instantcraftbp? why is it not jumping and proceed massiveresource when it's not equal to 0? then it works as intended
why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?
when the "find what writes to this address" that only shows the offset info from very first count of the instruction(offset info will not refresh), those do not mean are the same values, it could be other random numbers when instruction occur many times so it wont work in the cmp statement
r15 = is the one that is always 1 and thats why it works, the cheats now work but it cause few problems like soil cannot collect when instantcraftbp activated, or the building time for structures freezed when massive resources is active, i just fix them by adding a little bit more cmp value for structure building time and soil collect
massiveResources:
cmp r15,0
jne instaBPcraft
cmp rbp,3 //check and fix several game issues caused by cheats above (rbp for structure building time is static 3)
je code
mov [rbx+00000140],(int)138600 // Massive Resources
jmp return
this fixes all the other problem caused by the cheats, it works because the rbp i use is always the "3" right? just like the r15 = 1
now i get it, how these codes and instructions work in games
also i'm giving up doing instant soil collection, it just dont work properly, looks like there's some instruction behind it to "activate" soil canister to allow soil collecting
when i placed like 4 canisters and active soil insta fill cheat, it only fill 1 or 2, do not fill the rest of the canister unless i disable cheat
now im learning to write flag codes for drop menu , thanks for all the help, really appreciate
one question about registersymbol()
if i use it to contain both address value, i need to alloc memory for that right?
lets say if i need to show health value, i need to do following:
alloc(health,4)
registersymbol(health)
health:
dd 0
somewhere
mov [health],edx (if the edx is address of the health)
unregistersymbol(health)
in table:
[health] will show address and value
in ur flag code, there is no alloc for those symbols, because you only need those symbol to contain a value without any address?
and do i need to dealloc(health) if i use globalalloc(health,4) instead?
is under the newmem its fine but you can offcourse allocate new memory but it is just not needed and if you use globalalloc you don't have to dealloc memory because globalalloc uses the same spot in memory every time.
-
- Table Makers
- Posts: 336
- Joined: Thu Aug 03, 2017 6:19 am
- Reputation: 206
Re: Astroneer, an instruction is shared with tons of total different address and values.
Examples:
1:
alloc(health,8) / instead of globalalloc(health,4) = globalalloc(health,8)
1:
2:[ENABLE]
aobscanmodule(injectionpoint,Game.exe,Array of Bytes)
alloc(newmem,$100)
label(code)
label(return)
label(health) // Label Symbol so it can be used in the script
registersymbol(health) // Registersymbol so it can be used outside of the script
newmem:
code:
mov [health],edx
mov ecx,[edx+254]
jmp return // Over jump "health"
health: // Put it under Newmem, but so it never gets "used"
dd 0
injectionpoint:
jmp newmem
return:
registersymbol(injectionpoint)
[DISABLE]
injectionpoint:
db Some Bytes
unregistersymbol(injectionpoint)
dealloc(newmem)
unregistersymbol(health) // Unregister the Symbol
3:[ENABLE]
aobscanmodule(injectionpoint,Game.exe,Array of Bytes)
alloc(newmem,$100)
alloc(health,4) // Allocate New Memory for Health
label(code)
label(return)
registersymbol(health) // Registersymbolso it can be used outside of the script
health: // Best to put it outside of newmem
dd 0
newmem:
code:
mov [health],edx
mov ecx,[edx+254]
jmp return
injectionpoint:
jmp newmem
return:
registersymbol(injectionpoint)
[DISABLE]
injectionpoint:
db Some Bytes
unregistersymbol(injectionpoint)
dealloc(newmem)
dealloc(health) // Dealloc The Memory again
unregistersymbol(health) // Unregister the Symbol
Also this is for 32-bit games if you use a 64-bit game u have to change "dd 0" to "dq 0" and if you allocate memory use instead of alloc(health,4)[ENABLE]
aobscanmodule(injectionpoint,Game.exe,Array of Bytes)
alloc(newmem,$100)
globalalloc(health,4)
label(code)
label(return)
health: // Best to put it outside of newmem
dd 0
newmem:
code:
mov [health],edx
mov ecx,[edx+254]
jmp return
injectionpoint:
jmp newmem
return:
registersymbol(injectionpoint)
[DISABLE]
injectionpoint:
db Some Bytes
unregistersymbol(injectionpoint)
dealloc(newmem)
alloc(health,8) / instead of globalalloc(health,4) = globalalloc(health,8)
-
- Table Makers
- Posts: 198
- Joined: Sat Mar 04, 2017 1:46 pm
- Reputation: 83
Re: Astroneer, an instruction is shared with tons of total different address and values.
Spoiler
Bloodybone wrote: ↑Thu Nov 02, 2017 12:44 amExamples:
1:2:[ENABLE]
aobscanmodule(injectionpoint,Game.exe,Array of Bytes)
alloc(newmem,$100)
label(code)
label(return)
label(health) // Label Symbol so it can be used in the script
registersymbol(health) // Registersymbol so it can be used outside of the script
newmem:
code:
mov [health],edx
mov ecx,[edx+254]
jmp return // Over jump "health"
health: // Put it under Newmem, but so it never gets "used"
dd 0
injectionpoint:
jmp newmem
return:
registersymbol(injectionpoint)
[DISABLE]
injectionpoint:
db Some Bytes
unregistersymbol(injectionpoint)
dealloc(newmem)
unregistersymbol(health) // Unregister the Symbol3:[ENABLE]
aobscanmodule(injectionpoint,Game.exe,Array of Bytes)
alloc(newmem,$100)
alloc(health,4) // Allocate New Memory for Health
label(code)
label(return)
registersymbol(health) // Registersymbolso it can be used outside of the script
health: // Best to put it outside of newmem
dd 0
newmem:
code:
mov [health],edx
mov ecx,[edx+254]
jmp return
injectionpoint:
jmp newmem
return:
registersymbol(injectionpoint)
[DISABLE]
injectionpoint:
db Some Bytes
unregistersymbol(injectionpoint)
dealloc(newmem)
dealloc(health) // Dealloc The Memory again
unregistersymbol(health) // Unregister the SymbolAlso this is for 32-bit games if you use a 64-bit game u have to change "dd 0" to "dq 0" and if you allocate memory use instead of alloc(health,4)[ENABLE]
aobscanmodule(injectionpoint,Game.exe,Array of Bytes)
alloc(newmem,$100)
globalalloc(health,4)
label(code)
label(return)
health: // Best to put it outside of newmem
dd 0
newmem:
code:
mov [health],edx
mov ecx,[edx+254]
jmp return
injectionpoint:
jmp newmem
return:
registersymbol(injectionpoint)
[DISABLE]
injectionpoint:
db Some Bytes
unregistersymbol(injectionpoint)
dealloc(newmem)
alloc(health,8) / instead of globalalloc(health,4) = globalalloc(health,8)
uhm, isn't Astroneer a 64bit game? sometime i'm confused they also use "dd" in a 64bit only game.
Re: Astroneer, an instruction is shared with tons of total different address and values.
If you use alloc or globalalloc, you'll often get 0x1000 bytes allocated as a minimum (despite you writing the number 4 there), so for most things you probably don't want to allocate memory twice within one script. And if you don't need it anymore, there's no reason not to deallocate the memory again, for alloc and for globalalloc as well. Globalalloc is for special uses only, don't worry about it as a beginner.
Then the decision, whether you use dd or dq depends on the type of the the value you store, 8 byte or 4 byte (or less). A 64bit game can still use 4 byte integers or floats and a 32bit game can use 8 byte integers or doubles. Though for pointers 64 bit games will always use 64 bit pointers, so dq, and it's similar for 32bit games, dd here. If you're not sure, dq will always work, but it's a bit wasteful and bad style, because it means you have no idea, what you're doing xD db = data byte (1 byte), dw = data word (2 bytes), dd = data double word (4 byte), dq = data quad word(8 bytes)
Then the decision, whether you use dd or dq depends on the type of the the value you store, 8 byte or 4 byte (or less). A 64bit game can still use 4 byte integers or floats and a 32bit game can use 8 byte integers or doubles. Though for pointers 64 bit games will always use 64 bit pointers, so dq, and it's similar for 32bit games, dd here. If you're not sure, dq will always work, but it's a bit wasteful and bad style, because it means you have no idea, what you're doing xD db = data byte (1 byte), dw = data word (2 bytes), dd = data double word (4 byte), dq = data quad word(8 bytes)
-
- Table Makers
- Posts: 198
- Joined: Sat Mar 04, 2017 1:46 pm
- Reputation: 83
Re: Astroneer, an instruction is shared with tons of total different address and values.
seikur0 wrote: ↑Thu Nov 02, 2017 8:14 amIf you use alloc or globalalloc, you'll often get 0x1000 bytes allocated as a minimum (despite you writing the number 4 there), so for most things you probably don't want to allocate memory twice within one script. And if you don't need it anymore, there's no reason not to deallocate the memory again, for alloc and for globalalloc as well. Globalalloc is for special uses only, don't worry about it as a beginner.
Then the decision, whether you use dd or dq depends on the type of the the value you store, 8 byte or 4 byte (or less). A 64bit game can still use 4 byte integers or floats and a 32bit game can use 8 byte integers or doubles. Though for pointers 64 bit games will always use 64 bit pointers, so dq, and it's similar for 32bit games, dd here. If you're not sure, dq will always work, but it's a bit wasteful and bad style, because it means you have no idea, what you're doing xD db = data byte (1 byte), dw = data word (2 bytes), dd = data double word (4 byte), dq = data quad word(8 bytes)
ah sorry ,my bad, globalalloc() doesnt need to type number there, but thx for the info i have better understanding what globalalloc actually does
so using dq on a 4 bytes also works, but not necessary, and for 8bytes values, (example, 64bit game pointer) then I have to use dq to get the correct whole part of the value?
im sorry that this is supposed to be astroneer code help thread only, turns out asking more out of topic questions
I've been watching CE thread,video tutorials out there, and sometime didnt get to know the very basic thing how some of the code does, why and when we need to use them
just like if you never told me there's db dw dq other than dd, I only knows dd , lol
english isn't my first language, sorry about that if you don't understand what i'm saying
Re: Astroneer, an instruction is shared with tons of total different address and values.
This is part of Legends of Ellaria.CTsquall0833 wrote: ↑Mon Oct 30, 2017 5:55 pmHello guys,
Recently I went back to play Astroneer, and doing some cheats, then I found most of the stuff in the game shared the same instruction. And I'm running out of idea how to deal with this kind of instruction
However when this cheat is enabled, all building/crafting in the game will be freeze until the cheat is disable, it seems that the building/crafting time is also using the same instruction, I believe when an item is being crafted, the value is the same as harvest resource integer 138600 but decreasing instead, and when it reached 0, item is done,
So I wrote instantcraftbp compare statement, doesn't work, and crafting still freezing at 138600 (0% progression),
did some testing, the code that's freezing the crafting time was coming from massiveresources: code, If i change 138600 to 0, then instant craft works, but can no longer harvesting resources and soil, looks like something is wrong in this code that's still applying 138600 to the crafting time, cmp statement on instantcraftbp doesnt work?
is there any better way to identify what is the "edi" or "rbx+140" for them jump to the right cheat code?
Thanks
Maybe this will help you with ''CMP''
You must to "Break and Trace'' + ''Backtrack''
Code: Select all
[ENABLE]
aobscan(godmode,F3 0F 11 2E F3 0F 10 06 F3 0F 5A C0 F3)
alloc(newmem,$1000,0F26CA1C)
label(code)
label(return)
newmem:
cmp [rsi+60],(float)22
je Health
cmp [rsi+48],(float)22
je Mana
cmp [rsi+54],(float)22
je Shield
cmp [rsi+38],(float)22
je Breath
jmp code
Health:
mov [rsi],(float)999
cmp [rsi+48],(float)22
je Mana
movss xmm0,[rsi]
jmp return
Mana:
mov [rsi],(float)999
cmp [rsi+54],(float)22
je Shield
movss xmm0,[rsi]
jmp return
Shield:
mov [rsi],(float)999
cmp [rsi+38],(float)22
je Breath
movss xmm0,[rsi]
jmp return
Breath:
mov [rsi],(float)999
movss xmm0,[rsi]
jmp return
code:
movss [rsi],xmm5
movss xmm0,[rsi]
jmp return
godmode:
jmp newmem
nop
nop
nop
return:
registersymbol(godmode)
[DISABLE]
godmode:
db F3 0F 11 2E F3 0F 10 06
unregistersymbol(godmode)
dealloc(newmem)
-
- Table Makers
- Posts: 198
- Joined: Sat Mar 04, 2017 1:46 pm
- Reputation: 83
Re: Astroneer, an instruction is shared with tons of total different address and values.
ThanksBlayde wrote: ↑Sat Nov 18, 2017 7:54 pmThis is part of Legends of Ellaria.CTsquall0833 wrote: ↑Mon Oct 30, 2017 5:55 pmHello guys,
Recently I went back to play Astroneer, and doing some cheats, then I found most of the stuff in the game shared the same instruction. And I'm running out of idea how to deal with this kind of instruction
However when this cheat is enabled, all building/crafting in the game will be freeze until the cheat is disable, it seems that the building/crafting time is also using the same instruction, I believe when an item is being crafted, the value is the same as harvest resource integer 138600 but decreasing instead, and when it reached 0, item is done,
So I wrote instantcraftbp compare statement, doesn't work, and crafting still freezing at 138600 (0% progression),
did some testing, the code that's freezing the crafting time was coming from massiveresources: code, If i change 138600 to 0, then instant craft works, but can no longer harvesting resources and soil, looks like something is wrong in this code that's still applying 138600 to the crafting time, cmp statement on instantcraftbp doesnt work?
is there any better way to identify what is the "edi" or "rbx+140" for them jump to the right cheat code?
Thanks
Maybe this will help you with ''CMP''
You must to "Break and Trace'' + ''Backtrack''
Code: Select all
[ENABLE] aobscan(godmode,F3 0F 11 2E F3 0F 10 06 F3 0F 5A C0 F3) alloc(newmem,$1000,0F26CA1C) label(code) label(return) newmem: cmp [rsi+60],(float)22 je Health cmp [rsi+48],(float)22 je Mana cmp [rsi+54],(float)22 je Shield cmp [rsi+38],(float)22 je Breath jmp code Health: mov [rsi],(float)999 cmp [rsi+48],(float)22 je Mana movss xmm0,[rsi] jmp return Mana: mov [rsi],(float)999 cmp [rsi+54],(float)22 je Shield movss xmm0,[rsi] jmp return Shield: mov [rsi],(float)999 cmp [rsi+38],(float)22 je Breath movss xmm0,[rsi] jmp return Breath: mov [rsi],(float)999 movss xmm0,[rsi] jmp return code: movss [rsi],xmm5 movss xmm0,[rsi] jmp return godmode: jmp newmem nop nop nop return: registersymbol(godmode) [DISABLE] godmode: db F3 0F 11 2E F3 0F 10 06 unregistersymbol(godmode) dealloc(newmem)
Guess I should start to learn to use Break and Trace features, more and more recent game codes are getting more complex lol
maybe that can help me find the offset with static value more accurately
Who is online
Users browsing this forum: Gear2ndGandalf