 |
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4702
|
Posted: Sat Aug 27, 2016 4:11 pm Post subject: |
|
|
My post you quoted explains exactly that.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
 |
frenchiveruti Cheater
Reputation: 0
Joined: 07 Jun 2009 Posts: 35
|
Posted: Sat Aug 27, 2016 4:57 pm Post subject: |
|
|
ParkourPenguin wrote: | My post you quoted explains exactly that. |
Yes you do! I tried all, and it seems that it won't work
It just displays it as a red text or = ??? if placed as an adress.
And the "EAX" it's the correct one!
_________________
Acknowledgeable enough. |
|
Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4702
|
Posted: Sat Aug 27, 2016 5:00 pm Post subject: |
|
|
It's helpful to have more information besides "it doesn't work."
What is your script?
Which instruction are you injecting at?
Are you sure that instruction only accesses the addresses of characters?
Did you make the game run that section of assembly?
What value is stored at the registered symbol's address?
What text are you putting into the address field of the memory record?
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
 |
frenchiveruti Cheater
Reputation: 0
Joined: 07 Jun 2009 Posts: 35
|
Posted: Sat Aug 27, 2016 5:11 pm Post subject: |
|
|
ParkourPenguin wrote: | It's helpful to have more information besides "it doesn't work."
What is your script?
Which instruction are you injecting at?
Are you sure that instruction only accesses the addresses of characters?
Did you make the game run that section of assembly?
What value is stored at the registered symbol's address?
What text are you putting into the address field of the memory record? |
Yes sorry, I know, It's just that's a lot of stuff together.
Here's my code:
Code: | [ENABLE]
aobscanmodule(TEST,mb_warband.exe,69 C0 C8 0F 00 00 8B 0D * * * * 03) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
globalalloc(_charskill,4)
newmem:
code:
imul eax,eax,00000FC8
mov [_charskill],eax //The thing
jmp return
TEST:
jmp code
nop
return:
registersymbol(TEST)
[DISABLE]
TEST:
db 69 C0 C8 0F 00 00
unregistersymbol(TEST)
dealloc(newmem) |
Here's how it works (IT WORKS DUDE IT WORKS):
http://imgur.com/a/oGfdy
And as I show in the images, there are my problems with allocation.
Is there a way to "add" by code? Like "SUM A,B" or something along this lines?
_________________
Acknowledgeable enough. |
|
Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4702
|
Posted: Sat Aug 27, 2016 5:29 pm Post subject: |
|
|
Well, I discovered a small limitation to the way CE looks up symbols, but no matter. I guess you can just calculate the linear address in the code injection and use the registered symbol directly. You can read the assembly the game uses and learn from that, but I'll try to speed up the process a bit.
Code: | code:
imul eax,eax,00000FC8 // original code
push edx // backs up edx register
mov edx,[mb_warband.exe+4B8298] // 1st level pointer dereference
mov edx,[edx+140f0] // 1st offset + 2nd level pointer dereference
lea edx,[edx+eax+2BC] // adds base address of structures and offset of skills property
mov [_charskill],edx // stores the linear address into the address _charskill
pop edx // restores the backup of the edx register
jmp return |
With this, _charskill should store the address of the skill points of the structure that section of assembly is referring to. So in the "Address" field, use [_charskill].
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
 |
frenchiveruti Cheater
Reputation: 0
Joined: 07 Jun 2009 Posts: 35
|
Posted: Sat Aug 27, 2016 5:36 pm Post subject: |
|
|
ParkourPenguin wrote: | Well, I discovered a small limitation to the way CE looks up symbols, but no matter. I guess you can just calculate the linear address in the code injection and use the registered symbol directly. You can read the assembly the game uses and learn from that, but I'll try to speed up the process a bit.
Code: | code:
imul eax,eax,00000FC8 // original code
push edx // backs up edx register
mov edx,[mb_warband.exe+4B8298] // 1st level pointer dereference
mov edx,[edx+140f0] // 1st offset + 2nd level pointer dereference
lea edx,[edx+eax+2BC] // adds base address of structures and offset of skills property
mov [_charskill],edx // stores the linear address into the address _charskill
pop edx // restores the backup of the edx register
jmp return |
With this, _charskill should store the address of the skill points of the structure that section of assembly is referring to. So in the "Address" field, use [_charskill]. |
Ok, this worked like a charm, thanks a lot for saving both of us a lot of time
_________________
Acknowledgeable enough. |
|
Back to top |
|
 |
|
|
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
|
|