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 help with access/writes

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
Sobeit
How do I cheat?
Reputation: 0

Joined: 21 Dec 2019
Posts: 2

PostPosted: Sat Dec 21, 2019 12:36 am    Post subject: Need help with access/writes Reply with quote

New to all this, please forgiveth me.

I am trying to make terraforming instant in Stellaris, I have found pointers for research which allowed me to change the time and make it instant complete, I am not able to with the timer when it comes to terraforming a planet, I can find the timer address every time and change the value no problem, but obviously it will change per new game.

Please take a look at this and tell me what I can do to achieve my goal. (obvious learn wtf I am doing first, but that's why I am here lol)

The following writes to 28B80A2E7B7
Code:

7FF7C9A69DAD - 45 01 77 0C  - add [r15+0C],r14d

7FF7C9A69DA6 - 48 C1 E8 3F - shr rax,3F
7FF7C9A69DAA - 4C 03 F0  - add r14,rax
7FF7C9A69DAD - 45 01 77 0C  - add [r15+0C],r14d <<
7FF7C9A69DB1 - 41 8B 47 10  - mov eax,[r15+10]
7FF7C9A69DB5 - 41 39 47 0C  - cmp [r15+0C],eax

RAX=0000000000000000
RBX=0000000000000000
RCX=00000000000003E8
RDX=000000000001F400
RSI=0000028B63947040
RDI=0000028B65601530
RSP=00000096E43FD0F0
RBP=00000096E43FD159
RIP=00007FF7C9A69DB1
R8=000000000000008A
R9=000000000000008A
R10=0000028B65601530
R11=0000028B63947040
R12=0000000000000000
R13=00007FF7CAC62A50
R14=00000000000003E8
R15=0000028B80A2E7B0


Assuming because idk, [r15+0C],r14d, is "r14d the value" input into "[r15+0C]" and to find the value of r14d, I need to figure out the equation inbetween the below code or further up.
Code:

stellaris.exe+1A9D4F - 48 8B 05 1ACF7A01     - mov rax,[stellaris.exe+1956C70] { (2851A04E060) }
stellaris.exe+1A9D56 - 8B 88 E4440000        - mov ecx,[rax+000044E4]
stellaris.exe+1A9D5C - C1 E9 05              - shr ecx,05 { 5 }
stellaris.exe+1A9D5F - 48 8B 82 50160000     - mov rax,[rdx+00001650]
stellaris.exe+1A9D66 - F6 C1 01              - test cl,01 { 1 }
stellaris.exe+1A9D69 - 49 63 C8              - movsxd  rcx,r8d
stellaris.exe+1A9D6C - 8B 44 C8 04           - mov eax,[rax+rcx*8+04]
stellaris.exe+1A9D70 - 74 10                 - je stellaris.exe+1A9D82
stellaris.exe+1A9D72 - 85 C0                 - test eax,eax
stellaris.exe+1A9D74 - 78 09                 - js stellaris.exe+1A9D7F
stellaris.exe+1A9D76 - 41 3B C6              - cmp eax,r14d
stellaris.exe+1A9D79 - 41 0F4F C6            - cmovg eax,r14d
stellaris.exe+1A9D7D - EB 03                 - jmp stellaris.exe+1A9D82
stellaris.exe+1A9D7F - 41 8B C4              - mov eax,r12d
stellaris.exe+1A9D82 - 41 03 C6              - add eax,r14d
stellaris.exe+1A9D85 - 48 63 C8              - movsxd  rcx,eax
stellaris.exe+1A9D88 - 48 69 D1 E8030000     - imul rdx,rcx,000003E8 { 1000
 }
stellaris.exe+1A9D8F - 48 B8 CFF753E3A59BC420 - mov rax,20C49BA5E353F7CF { -481036337 }
stellaris.exe+1A9D99 - 48 F7 EA              - imul rdx
stellaris.exe+1A9D9C - 4C 8B F2              - mov r14,rdx
stellaris.exe+1A9D9F - 49 C1 FE 07           - sar r14,07 { 7 }
stellaris.exe+1A9DA3 - 49 8B C6              - mov rax,r14
stellaris.exe+1A9DA6 - 48 C1 E8 3F           - shr rax,3F { 63 }
stellaris.exe+1A9DAA - 4C 03 F0              - add r14,rax
stellaris.exe+1A9DAD - 45 01 77 0C           - add [r15+0C],r14d


I guess my question is, how can I alter/code "add [r15+0C],r14d"?, as all my addresses are accessed by this instruction. Lost at this point, for now I manually see what addresses are accessing it and double tap the address every time I start a new terraform operation so I can adjust to the value that will complete it.
Back to top
View user's profile Send private message
Csimbi
I post too much
Reputation: 94

Joined: 14 Jul 2007
Posts: 3110

PostPosted: Sat Dec 21, 2019 3:42 am    Post subject: Reply with quote

Let's see.
Code:

7FF7C9A69DA6 - 48 C1 E8 3F - shr rax,3F -> shift RAX right 63 times -> RAX will be either 0 or 1. (Could be a flag for paused or running or some bonus?)
7FF7C9A69DAA - 4C 03 F0  - add r14,rax -> add 0 or 1 to R14. (No progress when paused?)
7FF7C9A69DAD - 45 01 77 0C  - add [r15+0C],r14d << you know this
7FF7C9A69DB1 - 41 8B 47 10  - mov eax,[r15+10] -> get required value?
7FF7C9A69DB5 - 41 39 47 0C  - cmp [r15+0C],eax -> see if we have reached required value

So, if I were to make it instant build, I would insert one or two instructions before cmp, like this:
Code:
mov eax,[r15+10] -> get required value
mov [r15+0C],eax -> replace current value with required value
mov r14d,eax -> replace current value with max in R14 as well, see if the remainder of code uses it, if not, this is not required
cmp [r15+0C],eax -> see if we have reached
Back to top
View user's profile Send private message
Sobeit
How do I cheat?
Reputation: 0

Joined: 21 Dec 2019
Posts: 2

PostPosted: Sat Dec 21, 2019 11:54 am    Post subject: Reply with quote

Thank you, I will see what I can do.




update;
Csimbi wrote:
Let's see.
Code:

7FF7C9A69DA6 - 48 C1 E8 3F - shr rax,3F -> shift RAX right 63 times -> RAX will be either 0 or 1. (Could be a flag for paused or running or some bonus?)
7FF7C9A69DAA - 4C 03 F0  - add r14,rax -> add 0 or 1 to R14. (No progress when paused?)
7FF7C9A69DAD - 45 01 77 0C  - add [r15+0C],r14d << you know this
7FF7C9A69DB1 - 41 8B 47 10  - mov eax,[r15+10] -> get required value?
7FF7C9A69DB5 - 41 39 47 0C  - cmp [r15+0C],eax -> see if we have reached required value

So, if I were to make it instant build, I would insert one or two instructions before cmp, like this:
Code:
mov eax,[r15+10] -> get required value
mov [r15+0C],eax -> replace current value with required value
mov r14d,eax -> replace current value with max in R14 as well, see if the remainder of code uses it, if not, this is not required
cmp [r15+0C],eax -> see if we have reached


Worked as intended, thank you! I think I need to get more familiar with Opcodes and their functions.
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