Astroneer, an instruction is shared with tons of total different address and values.

Memory scanning, code injection, debugger internals and other gamemodding related discussion
Bloodybone
Table Makers
Table Makers
Posts: 288
Joined: Thu Aug 03, 2017 6:19 am
Reputation: 133

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by Bloodybone »

Ok I found another offset that works :) Here:
[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)

Bloodybone
Table Makers
Table Makers
Posts: 288
Joined: Thu Aug 03, 2017 6:19 am
Reputation: 133

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by Bloodybone »

Also something you can do is this:
<?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>
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 :)

squall0833
Table Makers
Table Makers
Posts: 196
Joined: Sat Mar 04, 2017 1:46 pm
Reputation: 81

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by squall0833 »

Bloodybone wrote:
Tue Oct 31, 2017 5:25 pm
Also something you can do is this:
<?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>
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 :)
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

Bloodybone
Table Makers
Table Makers
Posts: 288
Joined: Thu Aug 03, 2017 6:19 am
Reputation: 133

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by Bloodybone »

squall0833 wrote:
Tue Oct 31, 2017 8:23 pm
Bloodybone wrote:
Tue Oct 31, 2017 5:25 pm
Also something you can do is this:
<?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>
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 :)
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
I 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"

squall0833
Table Makers
Table Makers
Posts: 196
Joined: Sat Mar 04, 2017 1:46 pm
Reputation: 81

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by squall0833 »

Bloodybone wrote:
Tue Oct 31, 2017 9:20 pm
squall0833 wrote:
Tue Oct 31, 2017 8:23 pm
Bloodybone wrote:
Tue Oct 31, 2017 5:25 pm
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 :)
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
I 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"
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

:?: :shock: why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?

Bloodybone
Table Makers
Table Makers
Posts: 288
Joined: Thu Aug 03, 2017 6:19 am
Reputation: 133

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by Bloodybone »

squall0833 wrote:
Wed Nov 01, 2017 6:39 pm
Bloodybone wrote:
Tue Oct 31, 2017 9:20 pm
squall0833 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
I 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"
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

:?: :shock: why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?
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
Table Makers
Table Makers
Posts: 196
Joined: Sat Mar 04, 2017 1:46 pm
Reputation: 81

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by squall0833 »

Bloodybone wrote:
Wed Nov 01, 2017 7:51 pm
squall0833 wrote:
Wed Nov 01, 2017 6:39 pm
Bloodybone wrote:
Tue Oct 31, 2017 9:20 pm
I 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"
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

:?: :shock: why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?
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.
Ahh.. i see,
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 :D





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?

User avatar
jungletek
Shogun
Shogun
Posts: 179
Joined: Tue Oct 17, 2017 7:31 am
Reputation: 62

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by jungletek »

squall0833 wrote:
Wed Nov 01, 2017 8:10 pm
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?
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.

Also yes, you need to deallocate any memory you've allocated.

Bloodybone
Table Makers
Table Makers
Posts: 288
Joined: Thu Aug 03, 2017 6:19 am
Reputation: 133

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by Bloodybone »

squall0833 wrote:
Wed Nov 01, 2017 8:10 pm
Bloodybone wrote:
Wed Nov 01, 2017 7:51 pm
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

:?: :shock: why is the other offset dont work with cmp xxx,0 when it's not 0? but r15?
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.
Ahh.. i see,
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 :D





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?
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"
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.

Bloodybone
Table Makers
Table Makers
Posts: 288
Joined: Thu Aug 03, 2017 6:19 am
Reputation: 133

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by Bloodybone »

Examples:

1:
[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
2:
[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
3:
[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)
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)
alloc(health,8) / instead of globalalloc(health,4) = globalalloc(health,8)

squall0833
Table Makers
Table Makers
Posts: 196
Joined: Sat Mar 04, 2017 1:46 pm
Reputation: 81

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by squall0833 »

Spoiler
Bloodybone wrote:
Thu Nov 02, 2017 12:44 am
Examples:

1:
[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
2:
[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
3:
[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)
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)
alloc(health,8) / instead of globalalloc(health,4) = globalalloc(health,8)
you mean use alloc(health,8) or use globalalloc(health,8) if that's a 64bit game?

uhm, isn't Astroneer a 64bit game? sometime i'm confused they also use "dd" in a 64bit only game.

User avatar
seikur0
Code Alchemist
Code Alchemist
Posts: 440
Joined: Sat Aug 26, 2017 10:48 am
Reputation: 339

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by seikur0 »

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)

squall0833
Table Makers
Table Makers
Posts: 196
Joined: Sat Mar 04, 2017 1:46 pm
Reputation: 81

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by squall0833 »

seikur0 wrote:
Thu Nov 02, 2017 8:14 am
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)

ah sorry ,my bad, globalalloc() doesnt need to type number there, :P 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 :P if you don't understand what i'm saying

User avatar
Blayde
Expert Cheater
Expert Cheater
Posts: 230
Joined: Fri Aug 25, 2017 2:37 pm
Reputation: 47

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by Blayde »

squall0833 wrote:
Mon Oct 30, 2017 5:55 pm
Hello 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
This is part of Legends of Ellaria.CT
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)

squall0833
Table Makers
Table Makers
Posts: 196
Joined: Sat Mar 04, 2017 1:46 pm
Reputation: 81

Re: Astroneer, an instruction is shared with tons of total different address and values.

Post by squall0833 »

Blayde wrote:
Sat Nov 18, 2017 7:54 pm
squall0833 wrote:
Mon Oct 30, 2017 5:55 pm
Hello 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
This is part of Legends of Ellaria.CT
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)
Thanks
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

Post Reply

Who is online

Users browsing this forum: No registered users