AOB Scan Autoit

04/07/2014 13:04 alpines#16
Probier es mal mit _MemoryScanEx, das kann unter Umständen andere Resultate liefern.
04/07/2014 15:33 golle12#17
So ich bah dies mal mit _MemoryScanEx mal ausprobiert aber ich bekomme als rückgabe wert -4 was heit gas die länge der maske und des patterns ungleich ist aber was mache ich falsch :/ Hier das script:

PHP Code:
#include <NomadMemory.au3>
#RequireAdmin
SetPrivilege("SeDebugPrivilege"1)
$MemOpen _MemoryOpen(ProcessExists("S4Client.exe"))
$aob _MemoryScanEx($MemOpe","xxx????x?xx")
_MemoryClose(
$MemOpen)
MsgBox(0, "", 
$aob)

Func _MemoryScanEx(
$ah_Handle$pattern$mask , $after = False, $iv_addrStart = 0x00400000, $iv_addrEnd = 0xFFFFFFFF, $step = 51200)
If Not IsArray(
$ah_Handle) Then
SetError(1)
Return -1
EndIf
$pattern = StringRegExpReplace($pattern, "[^0123456789ABCDEFabcdef.]", "xxx????x?xx")
If StringLen(
$pattern) = 0 Then
SetError(2)
Return -2
EndIf
If Stringlen(
$pattern)/2 <> Stringlen($mask) Then
SetError(4)
Return -4
EndIf
Local 
$formatedpattern=""
Local 
$BufferPattern
Local 
$BufferMask
for 
$i = 0 to stringlen($mask)-1
$BufferPattern = StringLeft($pattern,2)
$pattern = StringRight($pattern,StringLen($pattern)-2)
$BufferMask = StringLeft($mask,1)
$mask = StringRight($mask,StringLen($mask)-1)
if 
$BufferMask = "?" then $BufferPattern = ".."
$formatedpattern = $formatedpattern&$BufferPattern
Next
$pattern = $formatedpattern
For 
$addr = $iv_addrStart To $iv_addrEnd Step $step - (StringLen($pattern) / 2)
StringRegExp(_MemoryRead(
$addr$ah_Handle, "byte[" & $step & "]"), $pattern, 1, 2)
If Not @error Then
If 
$after Then
Return StringFormat("
0x%.8X", $addr + ((@extended - 2) / 2))
Else
Return StringFormat("
0x%.8X", $addr + ((@extended - StringLen($pattern) - 2) / 2))
EndIf
EndIf
Next
Return -3
EndFunc