Code:
#include <pointer.au3>
SetPrivilege("SeDebugPrivilege", 1)
Die notwendige include datei, kann ich auf wunsch einhängen(oder einfach im spoiler auf das moblock thema gehen dort ist diese auch zu finden :P)
Code:
$pid = WinGetProcess("METIN2")
$openmem = _MemoryOpen($pid)
$baseadress = _MemoryModuleGetBaseAddress($pid,"metin2client.bin")
$pid ist der Prozess
$baseadress ist für die memory funktion wichtig. metin2client.bin ist das, was vor dem +zahl steht in der Pointeransicht. $pid ist wie beschrieben der Prozess.
Code:
$testoffset1 = "2C8" ; offset neben dem metin2client.bin
$testoffset2 = "5BA" ;das obere offset
$testoffset3 = "001F74FC" ;steht neben dem metin2client.bin+[wert]
hier die offsets + die adresse
Code:
Global $AOffset[3]
$AOffset[0] = 0
$AOffset[1] = Dec($testoffset1)
$AOffset[2] = Dec($testoffset2)
$Aaddress = "0x" & Hex($baseadress + Dec($testoffset3))
Code:
$Amemread = _MemoryPointerRead($Aaddress, $openmem, $AOffset, "byte[2]")
memory read funktion welche wir nicht umbedingt brauchen trotzdem möchte ich euch zeigen wie diese angewandt wird. Der wert der daraus kommt ist ein array dabei ist [1] der wert den wir brauchen.
Code:
$Awert = _ReturnMemoryValue($Amemread[1])
$Awert = Dec($Awert)
Der ausgelesene Wert ist noch in hex und in der falschen reihenfolge. die Funktion behebt dies.
Code:
Func _ReturnMemoryValue($sAdresse)
;blubbstar
$sNewAdresse = ""
$sAdresse = StringTrimLeft($sAdresse, 2)
For $i = StringLen($sAdresse) - 1 To 0 Step -2
$sNewAdresse &= StringMid($sAdresse, $i, 2)
Next
Return $sNewAdresse
EndFunc ;==>_ReturnMemoryValue
Und hier unten sehen wir, dass er dauerhaft den wert 16256 schreibt.
Code:
while 1
_MemoryPointerWrite($Aaddress, $openmem, $AOffset, "16556", "dword")
wend