so könnte man ein updater schreiben der unabhängig von der aktuellen characterposition funktioniert. ich weiss man hätte es vlt etwas einfacher schreiben können :)
soll ja nur ein kleines beispiel sein.
ich hab es nur für die Section D gemacht, bei A sollte aber das selbe sein... natürlich müsstet ihr die offsets selber dazurechnen.
Code:
#include<nomadmemory.au3>
$GwPID = ProcessExists("Gw.exe")
$Hproc = _MemoryOpen($GwPID)
Func _GetNewFunction()
Dim $_007_Function[6] = [0x0, 0x1, 0x3, 0xE, 0x16, 0x23]
Dim $007_Function[6] = [2213317461, 3968068747, 1443949699, 227084427, 1351339915, 2299019403]
Dim $NFunction[6] = [0, 0, 0, 0, 0, 0]
$StartScan = 0x7A0000
$EndScan = 0x7FFFFF
Do
$NFunction[0] = _MemoryRead($StartScan, $Hproc)
if $NFunction[0] = $007_Function[0] Then
$NFunction[1] = _MemoryRead($StartScan + $_007_Function[1], $Hproc)
if $NFunction[1] = $007_Function[1] Then
$NFunction[2] = _MemoryRead($StartScan + $_007_Function[2], $Hproc)
if $NFunction[2] = $007_Function[2] Then
$NFunction[3] = _MemoryRead($StartScan + $_007_Function[3], $Hproc)
if $NFunction[3] = $007_Function[3] Then
$NFunction[4] = _MemoryRead($StartScan + $_007_Function[4], $Hproc)
if $NFunction[4] = $007_Function[4] Then
$NFunction[5] = _MemoryRead($StartScan + $_007_Function[5], $Hproc)
if $NFunction[5] = $007_Function[5] Then
Return $StartScan
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
$StartScan = $StartScan + 1
Until $StartScan > $EndScan
EndFunc
$NewF = _GetNewFunction()
$NewFunction = 0x26 + $NewF
$N_SECTION_D_POSX = _MemoryRead($NewFunction, $Hproc)
MsgBox(1, "", Hex($N_SECTION_D_POSX))
; "$NewFunction" hier wird die neue adresse der X-achse aus SectionD stehen.
; schauts euch mal im ollydb oder sonst wo an.