View previous topic :: View next topic |
Author |
Message |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 4:14 pm Post subject: Dissect Data/Structure Confusion |
|
|
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 |
|
 |
vng21092 Grandmaster Cheater
Reputation: 15
Joined: 05 Apr 2013 Posts: 644
|
Posted: Sun May 24, 2015 4:21 pm Post subject: |
|
|
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 |
|
 |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 4:34 pm Post subject: |
|
|
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 |
|
 |
vng21092 Grandmaster Cheater
Reputation: 15
Joined: 05 Apr 2013 Posts: 644
|
Posted: Sun May 24, 2015 4:36 pm Post subject: |
|
|
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 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 |
|
 |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 4:42 pm Post subject: |
|
|
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 |
|
 |
vng21092 Grandmaster Cheater
Reputation: 15
Joined: 05 Apr 2013 Posts: 644
|
Posted: Sun May 24, 2015 4:47 pm Post subject: |
|
|
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 |
|
 |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 4:50 pm Post subject: |
|
|
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 |
|
 |
vng21092 Grandmaster Cheater
Reputation: 15
Joined: 05 Apr 2013 Posts: 644
|
Posted: Sun May 24, 2015 4:51 pm Post subject: |
|
|
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 |
|
 |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 4:53 pm Post subject: |
|
|
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 |
|
 |
vng21092 Grandmaster Cheater
Reputation: 15
Joined: 05 Apr 2013 Posts: 644
|
Posted: Sun May 24, 2015 4:56 pm Post subject: |
|
|
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 |
|
 |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 4:58 pm Post subject: |
|
|
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 |
|
 |
vng21092 Grandmaster Cheater
Reputation: 15
Joined: 05 Apr 2013 Posts: 644
|
Posted: Sun May 24, 2015 5:08 pm Post subject: |
|
|
wait, is this what "Gwent" is?
|
|
Back to top |
|
 |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 5:16 pm Post subject: |
|
|
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 |
|
 |
vng21092 Grandmaster Cheater
Reputation: 15
Joined: 05 Apr 2013 Posts: 644
|
Posted: Sun May 24, 2015 5:17 pm Post subject: |
|
|
ehhhh it honestly depends on how the game is scripted
|
|
Back to top |
|
 |
ubiByte Advanced Cheater
Reputation: 1
Joined: 08 Mar 2013 Posts: 57
|
Posted: Sun May 24, 2015 5:21 pm Post subject: |
|
|
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 |
|
 |
|