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 


Starbound unstable (upbeat giraffe)
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue Dec 23, 2014 6:44 am    Post subject: Reply with quote

Code:
[ENABLE]
alloc(newmem,2048)
label(returnhere)

newmem:
mov ebx,#100  //or whatever value you want. If float type, then change the # to (float)
mov [ecx+14],ebx
pop ebx
pop ebp
jmp returnhere

"starbound_opengl.exe"+1E1067:
jmp newmem
returnhere:

[DISABLE]
dealloc(newmem)
"starbound_opengl.exe"+1E1067:
mov [ecx+14],ebx
pop ebx
pop ebp
//Alt: db 89 59 14 5B 5D


Although...setting a value is better on an instruction that accesses, not just writes...that way, the value will be updated instantaneously, even if you have 0 quantity.
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Tue Dec 23, 2014 8:22 am    Post subject: Reply with quote

Thank you very much! worked perfectly, Now i have unlimited bandages. But only bandages. as you can see in the picture, in slot 2 i have bandages.

If i want to get unlimited "all items". Do i have to do the same thing over again will all the items one by one? Or can i use another method to get unlimited "everything"? Maybe the data/structure method?



ch upload.png
 Description:
 Filesize:  22.05 KB
 Viewed:  15092 Time(s)

ch upload.png


Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue Dec 23, 2014 8:38 am    Post subject: Reply with quote

Usually, things like this are being handled by the same instruction. To check, simply right-click on the bandages address and check to see which instructions access that address. From there, you check to see which instructions access multiple addresses in the debugger window (like I explained in a previous post). Now, you may be able to inject your code using an instruction that accesses ALL items...and you're done.

Last edited by ++METHOS on Tue Dec 23, 2014 5:05 pm; edited 1 time in total
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Tue Dec 23, 2014 12:48 pm    Post subject: Reply with quote

I found the "add" value. Everything that i pick up goes through it. If i nop the function i can't pick anything up (which makes sense). Can i somehow make it: when i pick something up it makes it to 99 and freezes it there? If so how..
I have tried myself but everytime i get the same error as before. I really need to understand what the code does. I have read the tut here on ch about auto assembler. still a little confused when i actually write the code.

Original code:

[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
originalcode:
add [esi+14],edx
lea esp,[ebp-0C]

exit:
jmp returnhere

"starbound_opengl.exe"+1E1338:
jmp newmem
nop
returnhere:


[DISABLE]
dealloc(newmem)
"starbound_opengl.exe"+1E1338:
add [esi+14],edx
lea esp,[ebp-0C]
//Alt: db 01 56 14 8D 65 F4


if you don't have time write it, maybe you can just point me in the right direction?

I also always get confused about the second row of code. Now for example it is: lea esp,[ebp-0C]
I don't know if i need to include it in new memory etc..

Thanks again!
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue Dec 23, 2014 2:00 pm    Post subject: Reply with quote

Please explain your steps and provide screen shots.

If this instruction accesses all item quantities, you should be able to manipulate edx with whatever you want, like before. However, you also have to be sure that the instruction does not also access other addresses (besides item quantities). Is there another address, such as a non-add function, that accesses all item quantities?
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Tue Dec 23, 2014 2:03 pm    Post subject: Reply with quote

I believe there is. eitherway i figured it out. This is my code:

[ENABLE]
alloc(newmem,100)
label(returnhere)
label(exit)

newmem:
mov edx,#50
mov [esi+14],edx
pop edx
lea esp,[ebp-0C]
jmp returnhere

exit:
jmp returnhere
"starbound_opengl.exe"+1E1338:
jmp newmem
nop
returnhere:



[DISABLE]
dealloc(newmem)
"starbound_opengl.exe"+1E1338:
add [esi+14],edx
lea esp,[ebp-0C]
//Alt: db 01 56 14 8D 65 F4

It's working.


Except now it freezes the value at 50 on all the items that are stackable. Now i just need to find the one that is for the non-stackable items, like weapons etc. (rather duplicating and not freezing)
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue Dec 23, 2014 3:27 pm    Post subject: Reply with quote

You shouldn't pop edx.

Yes, writing it that way will lock the values in at 50. You can do whatever you want, though.
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Tue Dec 23, 2014 4:01 pm    Post subject: Reply with quote

I see, what should i do instead of pop? Remove it or add something else?
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue Dec 23, 2014 4:10 pm    Post subject: Reply with quote

Remove it. It is probably being handled somewhere else in code and you don't want to pop it prematurely if it is being used elsewhere.

Typically, you only pop a register if you push it first, for temporary usage...and even then, you generally try to stay away from registers that are already being used inside of your script.

You could, for example, do something like this:

Code:
newmem:
push edi
mov edi,#50
mov [esi+14],edi
pop edi
lea esp,[ebp-0C]
jmp returnhere


At least, this is my basic understanding on the matter.
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Tue Dec 23, 2014 5:41 pm    Post subject: Reply with quote

Thank you for the tip! Smile

Maybe a stupid question but anyways, where do you get "edi" from?

Also what does it do? Are you just using it for storage?

Thanks!
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue Dec 23, 2014 6:03 pm    Post subject: Reply with quote

It's just a random register that isn't being used inside of your script.
Yes, in this case, for temporary storage.
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Tue Dec 23, 2014 6:23 pm    Post subject: Reply with quote

newmem:

push edi // pushes a word onto stack.

mov edi,#50 // tell the edi to increase it by 50.

mov [esi+14],edi // move the edi (50) into the code.

pop edi // "generate" the new code?

lea esp,[ebp-0C] // just a part of the originalcode?

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: Wed Dec 24, 2014 12:53 am    Post subject: Reply with quote

I'm not the best person to be asking regarding specifics relating to assembly.

That said...

You can read about push/pop functions via google. A 'mov' instruction just means move, not increase. So, regardless of what the value is/was, it will become whatever value you are moving in to it, not increase the value.

lea is load effective address, and yes, part of the original code.
Back to top
View user's profile Send private message
XaneXXXX
Expert Cheater
Reputation: 0

Joined: 29 Nov 2012
Posts: 212

PostPosted: Wed Dec 24, 2014 11:42 am    Post subject: Reply with quote

i understand. Thank you for all of your help!

Merry Christmas Smile
Back to top
View user's profile Send private message
Malae
Newbie cheater
Reputation: 0

Joined: 21 Dec 2013
Posts: 11

PostPosted: Thu Dec 25, 2014 9:17 pm    Post subject: Reply with quote

Can't you just use /admin ? there are a ton of admin commands out there.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking All times are GMT - 6 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
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