I'm sorry to say: Yes, it says so.
The debugger shows the following: The Memhack module is accessing the right address for writing operations, as expected. But it is setting it to 0
Ok, for references, here is the complete process:
The variable to change is at 00bd76e4. This adsress is know via a pointer, so here comes the first part:
Code:
new Pointer = memhack_get_pointer(19379432,MEM_DLLBASE,MEMTYPE_DATA)
new Target = Pointer + 308
server_print("Memhack get float: %.2f",memhack_get_float(Target,MEM_DLLBASE,MEMTYPE_DATA))
This works perfectly: The value stored there in float is 100.0 and is shown corrctly. When the value changes, this is also shown correct. So READING the value is flawless in every way.
Now i was trying to change the value with the folling code:
Code:
new memhack_set_float(Target,MEM_DLLBASE,200.0,MEMTYPE_DATA)
Very simple, just for testing purposes.. It will be set to 0. I then let the debugger checked every write acess to the target and it was shown: Memhack realy accesses this value and changes it - this is the good part
The code that archives this at the end is simple:
Code:
memhack assembler code:
mov ecx,[esp + 1c]
mov [esi],ecx
But this particular address [esp + 1c] is set to 0 when time has come.
So i think memhack does it's job perfectly: it writes a new value to the target, but not the value expected. ^^
What makes me think there may be a handler problem in the function MEMHACK_SET_FLOAT for the new float value...
All still happens under Windows, the test machine is windows xp.
/Edit:
it appears that i can't even set char's - alway 0 is the set value.....So, there are two possibilities: First one, and maybe the right: i am using this module wrong. The other one is: The dll misses something on windows...
__________________