Pointer.au3 funktionen auf 64Bit

11/24/2011 15:27 Asuramaru#1
PHP Code:
    Global $OffsetFee[3] = [00x1940x44]
    Global 
$Static Dec("244AFC")
    
$MemOpen _MemoryOpen(ProcessExists("NostaleX.dat"))
    
$BaseAddr _MemoryGetBaseAddress($MemOpen1)
    
$Addr "0x" Hex($BaseAddr $Static)
    
_MemoryPointerWrite($Addr$MemOpen$OffsetFee$Fee"dword")
    
_MemoryClose($MemOpen
Mein Problem besteht dadrin das der oben gezeigte teil auf 32bit Versionen Problemlos funktioniert aber auf Win7/Vista mit 64bit nicht.

Das compilen als 64x Version hilft dort auf nicht.

Was für einen Grund hat es das er dort nicht funktioniert?
Und wie kann man das beheben?
11/24/2011 16:04 2F4U#2
Hast du es als Admin ausgeführt ?
11/24/2011 16:23 Asuramaru#3
hätte ich dazu schreiben sollen :)
Ja wurde als Admin ausgeführt
11/24/2011 16:38 lolkop#4
schau doch mal in der udf nach über welche funktion die baseadress ausgelesen wird.

kann mir vorstellen, das es einige funktionen auf 64bit systemen in dieser form nicht gibt, bzw welche dort nicht funktionieren.
11/24/2011 17:55 KDeluxe#5
Du musst nur den Typ der Parameter ändern:

PHP Code:
Func _MemoryGetBaseAddress($ah_Handle$iHexDec 0$iv_Address 0x00100000)
    
Local $v_Buffer DllStructCreate('ptr;ptr;dword;ulong_ptr;dword;dword;dword')
    
Local $vData
    Local $vType

    
If Not IsArray($ah_HandleThen
        SetError
(1)
        Return 
0
    
EndIf

    
DllCall($ah_Handle[0], 'ulong_ptr''VirtualQueryEx''int'$ah_Handle[1], 'dword'$iv_Address'ptr'DllStructGetPtr($v_Buffer), 'ulong_ptr'DllStructGetSize($v_Buffer))

    If 
Not @Error Then
        $vData 
Hex(DllStructGetData($v_Buffer2))
        
$vType Hex(DllStructGetData($v_Buffer3))

        While 
$vType <> "00000080"
            
DllCall($ah_Handle[0], 'ulong_ptr''VirtualQueryEx''int'$ah_Handle[1], 'dword'$iv_Address'ptr'DllStructGetPtr($v_Buffer), 'ulong_ptr'DllStructGetSize($v_Buffer))
            
$vData Hex(DllStructGetData($v_Buffer2))
            
$vType Hex(DllStructGetData($v_Buffer3))
            If 
Hex($iv_Address) = "90000000" Then ExitLoop
            $iv_Address 
+= 65536
        WEnd

        
If $vType "00000080" Then
            SetError
(0)
            If 
$iHexDec 1 Then
                
Return Dec($vData)
            Else
                Return 
$vData
            
EndIf
        Else
            
SetError(2)
            Return 
0
        
EndIf
    Else
        
SetError(3)
        Return 
0
    
EndIf
EndFunc   ;==>_MemoryGetBaseAddress