im pretty new here
i have this pointer
offset7: fc8
offset6: c
offset5: 10
offset4: 0
offset3: 5c
offset2: 20
offset1: 24
"GameAssembly.dll"+01ADFC7C
question is how can i use/compare it in asm table?
how can i compare pointer in asm?
- MikinaneShindouda
- Expert Cheater
- Posts: 74
- Joined: Mon Sep 25, 2017 7:30 pm
- Reputation: 92
Re: how can i compare pointer in asm?
You'll have to follow the pointers manually. Instead of writing a wall of text here (which would only give you a worse explanation, I'm sure), I'd recommend watching the tutorial video from "Cheat The Game":
have fun,
Marc
have fun,
Marc
- MikinaneShindouda
- Expert Cheater
- Posts: 74
- Joined: Mon Sep 25, 2017 7:30 pm
- Reputation: 92
- PeaceBeUponYou
- Expert Cheater
- Posts: 75
- Joined: Sat Dec 12, 2020 8:09 am
- Reputation: 125
Re: how can i compare pointer in asm?
in AAssembler
then your current address will be called as symbol and you can directly link to it
Code: Select all
label(symbol)
[[[[[[["GameAssembly.dll"+01ADFC7C]+24]+20]+5C]+0]+10]+C]+FC8:
symbol:
Re: how can i compare pointer in asm?
If you use the symbol the address is calculated when you enable the script. If one of the pointers changes like if this is a pointer for the ship you're in and you get in another ship, that object could get destroyed and you could corrupt the game memory or have an access violation. You could use code to go through the pointers. If you check for null (0) at each step that is usually sufficient:
Of course it would be better to hook the code that actually uses the value at this address and do something with it there... You mention comparing the pointer. I'll assume the value is a pointer to the current ship you're in let's say, and you have a function that does damage to ships so you want to make it so it does 0 damage to YOUR ship by comparing the ship pointer to this value. The normal way to do this would be to have two scripts. One hooks the code that you know accesses the player's ship and no other and saves that value to an address in memory and registers a symbol for it (pseudo-code here):
Then when you have code that does damage to a ship, you can compare that pointer with the ship pointer (esi here) and skip the instruction that subtracts the damage if it matches:
Code: Select all
push eax
mov eax,["GameAssembly.dll"+01ADFC7C]
test eax,eax
jz @f // jumps forward to the next '@@:' label
mov eax,[eax+24]
test eax,eax
jz @f
mov eax,[eax+20]
test eax,eax
jz @f
mov eax,[eax+5c]
test eax,eax
jz @f
mov eax,[eax]
test eax,eax
jz @f
mov eax,[eax+10]
test eax,eax
jz @f
mov eax,[eax+c]
test eax,eax
jz @f
// now eax has the last pointer, I assume the value you want to use is at [eax+fc8]
// say we want to change the value to 1,000
mov [eax+fc8],#1000
@@:
pop eax
Code: Select all
[enable]
label(pPlayerShip)
newmem:
mov eax,[ecx+fc8] // original code
mov [pPlayerShip],eax
jmp return
align 10
pPlayerShip:
dd 0
hook:
jmp newmem
return:
registersymbol(pPlayerShip)
Code: Select all
[enable]
alloc(newmem,$1000)
newmem:
cmp esi,[pPlayerShip]
je @f
subss xmm1, xmm2 // original instruction, subtracts damage
@@:
jmp return
Who is online
Users browsing this forum: No registered users