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 


Dissect Data/Structure Confusion
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 4:14 pm    Post subject: Dissect Data/Structure Confusion Reply with quote

Hi,

I think I have figured out how to use the tool to dissect data and structures but I am not sure how to code afterwards. Here's an example:

I found the value of health for me and my enemy, put us in two different groups to find a difference and I did.

At offset 124, player's value is 0 and the enemy value is 1. I am trying to write a script to affect only the player's hp but i'm having no luck.

I was doing things like this:
Code:
newmem:
cmp [rcx+124],0
je cheat
jmp code

cheat:
mov eax,[rdx+rcx]
mov [rdx+rcx],eax
jmp return

code:
mov [rdx+rcx],eax
jmp return


That code above still applies to the enemy group, how do I make it so that only the player is affected by the script?
Back to top
View user's profile Send private message  
vng21092
Grandmaster Cheater
Reputation: 15

Joined: 05 Apr 2013
Posts: 644

PostPosted: Sun May 24, 2015 4:21 pm    Post subject: Reply with quote

in the structure dissect windows is offset 124 a 4 byte value or a byte? if its a 4 byte then your code should be ok, though I would change it to just one line
Code:
cheat:
mov [rdx+rcx],#100 (or whatever your health is)
however, if offset 124 is a byte, then change your compare to
Code:
cmp byte ptr [rcx+124],0
Back to top
View user's profile Send private message  
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 4:34 pm    Post subject: Reply with quote

It is 4-byte, when I enable the cheat, it's applying to everyone still not to just the player. Really not getting why that's the case.
Back to top
View user's profile Send private message  
vng21092
Grandmaster Cheater
Reputation: 15

Joined: 05 Apr 2013
Posts: 644

PostPosted: Sun May 24, 2015 4:36 pm    Post subject: Reply with quote

hmm are you sure you have the correct structure then? When you pasted your address into the dissect window did you remove the offset? Say the instruction was
Code:
mov [eax+4],ebx
were all the addresses in the dissect window followed with a "-4"? In your case the offset is the value of "rcx", use a breakpoint to find out what "rcx" is and subtract that from your addresses.
Back to top
View user's profile Send private message  
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 4:42 pm    Post subject: Reply with quote

That's what I am thinking I mess up on, could you help out with another example just to see if I am doing it right, we have these two addresses:

Player: 3C0993A0
Opponent: 3C0993A4

They write to this mov [rcx+r15*4],eax

rcx = 3C0993A0, r15= 00000000

how would I deal with this one?
Back to top
View user's profile Send private message  
vng21092
Grandmaster Cheater
Reputation: 15

Joined: 05 Apr 2013
Posts: 644

PostPosted: Sun May 24, 2015 4:47 pm    Post subject: Reply with quote

mmm, screw that. How'd you figure out offset 124 to begin with? When you pasted your addresses into the dissect window, did you change them at all or left them as they were in your address list? Because if you didn't change them at all and you still found an offset to differ between you and enemies, you could just write
Code:
cmp [rcx+r15*4+124],0
In your first code, you wrote "rdx+rcx", but now you're telling me its "rcx+r15*4", which are obviously 2 different instructions, which one are you using?
Back to top
View user's profile Send private message  
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 4:50 pm    Post subject: Reply with quote

The offset I found was for another script, since I failed at it I moved on to trying another to see what I am missing lol but I had found the 124 by taking the base address and subtracting the player address from it
Back to top
View user's profile Send private message  
vng21092
Grandmaster Cheater
Reputation: 15

Joined: 05 Apr 2013
Posts: 644

PostPosted: Sun May 24, 2015 4:51 pm    Post subject: Reply with quote

awww comon don't give up so easily, a lot of this stuff is pretty simple once you get the hang of it. Mind telling me what game it is? Or is it one of those forbidden topics here.
Back to top
View user's profile Send private message  
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 4:53 pm    Post subject: Reply with quote

No I don't care if you know the game lol it's witcher 3, I am playing around with the card game I have my player's total and the opponents, I would like to just modify my own player and put it in a script so I don't have to manually search for my value and freeze it all the time.
Back to top
View user's profile Send private message  
vng21092
Grandmaster Cheater
Reputation: 15

Joined: 05 Apr 2013
Posts: 644

PostPosted: Sun May 24, 2015 4:56 pm    Post subject: Reply with quote

give me an aob of your code and tell me what you want it to do, I'll see if I can whip something up, and tell me where to find these "card games", I haven't sunk too much time into the game yet.
Back to top
View user's profile Send private message  
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 4:58 pm    Post subject: Reply with quote

Code:
[ENABLE]
aobscanmodule(cardGame, witcher3.exe, 42 89 04 B9 8B 4C 24 30 8B C1 83 E0 1F 3C 09)
alloc(newmem, $1000, cardGame)
label(code)
label(cheat)
label(return)

newmem:

cheat:

code:
mov [rcx+r15*4],eax
mov ecx,[rsp+30]
jmp return

cardGame:
jmp code
nop
nop
nop
return:
registersymbol(cardGame)

[DISABLE]
cardGame:
db 42 89 04 B9 8B 4C 24 30
unregistersymbol(cardGame)
dealloc(newmem)


This is the AOB, I just can't figure out how to separate myself from the enemy, if I edit the script as it is it applies to both sides and the game will end in a draw.

To find these card games, it's random really but you can usually play against merchants or the bloody baron if you've gotten that far. My goal is to either increase my score by a certain amount each hand or just increase my total to a specific number.
Back to top
View user's profile Send private message  
vng21092
Grandmaster Cheater
Reputation: 15

Joined: 05 Apr 2013
Posts: 644

PostPosted: Sun May 24, 2015 5:08 pm    Post subject: Reply with quote

wait, is this what "Gwent" is?
Back to top
View user's profile Send private message  
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 5:16 pm    Post subject: Reply with quote

Yea this is the stupid gwent game lol, I was actually thinking of doing this another way but I am not sure how to do it. I was thinking of writing a script to find the base address of the player and then finding the values from there, is that possible? I've seen people create scripts that go to the player's base pointer and then from there everything that's related to the player is listed.

That way you could just change the value of the player and win every time without having to scan every game
Back to top
View user's profile Send private message  
vng21092
Grandmaster Cheater
Reputation: 15

Joined: 05 Apr 2013
Posts: 644

PostPosted: Sun May 24, 2015 5:17 pm    Post subject: Reply with quote

ehhhh it honestly depends on how the game is scripted
Back to top
View user's profile Send private message  
ubiByte
Advanced Cheater
Reputation: 1

Joined: 08 Mar 2013
Posts: 57

PostPosted: Sun May 24, 2015 5:21 pm    Post subject: Reply with quote

Since I have scanned for this many times, there's a pattern, the Base Address is actually the player. It always ends with A0, when I do the scans if I see one that ends with an A0 that's always it.

I know this is a stupid thing to cheat, but it's more about learning for me then what I am actually achieving. I feel like it should be possible to cheat this because it's similar to other things, i don't know.
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 1, 2  Next
Page 1 of 2

 
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