[Memory read] Baseadresse mit Script rausfinden?

03/18/2012 00:17 Masterscripter#31
Wo genau muss ich dann @error einbinden?
03/18/2012 09:38 jacky919#32
PHP Code:
Func _MemoryModuleGetBaseAddress($iPID, $sModule)
    If 
Not ProcessExists($iPID) Then Return SetError(1, 0, 0)

    If 
Not IsString($sModule) Then Return SetError(2, 0, 0)

    
Local   $PSAPI = DllOpen("psapi.dll")

    ;
Get Process Handle
    Local   $hProcess
    Local   $PERMISSION 
= BitOR(0x0002, 0x0400, 0x0008, 0x0010, 0x0020) ; CREATE_THREAD, QUERY_INFORMATION, VM_OPERATION, VM_READ, VM_WRITE

    
If $iPID > 0 Then
        Local $hProcess 
= DllCall("kernel32.dll", "ptr", "OpenProcess", "dword", $PERMISSION, "int", 0, "dword", $iPID)
        
MsgBox(0, "openprocess", @error)
        If 
$hProcess[0] Then
            $hProcess 
= $hProcess[0]
        EndIf
    EndIf

    ;
EnumProcessModules
    Local   $Modules 
= DllStructCreate("ptr[1024]")
    
Local   $aCall = DllCall($PSAPI, "int", "EnumProcessModules", "ptr", $hProcess, "ptr", DllStructGetPtr($Modules), "dword", DllStructGetSize($Modules), "dword*", 0)
    If 
$aCall[4] > 0 Then
        Local   $iModnum 
= $aCall[4] / 4
        Local   $aTemp
        $sModules 
= ""
        
For $i = 1 To $iModnum
            $aTemp 
=  DllCall($PSAPI, "dword", "GetModuleBaseNameW", "ptr", $hProcess, "ptr", Ptr(DllStructGetData($Modules, 1, $i)), "wstr", "", "dword", 260)
            
$sModules &= $aTemp[3] &  @crlf
            
If $aTemp[3] = $sModule Then
                DllClose
($PSAPI)
                Return 
Ptr(DllStructGetData($Modules, 1, $i))
            EndIf
        
Next
        MsgBox
(0, "modules", $sModules)
    EndIf

    
DllClose($PSAPI)
    Return 
SetError(-1, 0, 0)

EndFunc 
03/18/2012 11:41 Masterscripter#33
Also die drei Meldungen kommen genau in der Reihenfolge, in der ich sie hier poste:

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]
03/18/2012 12:16 jacky919#34
Wie du an der zweiten Meldung erkennen kannst ist das Modul "Game.dll" überhaupt nicht geladen.

Welchen Prozess wählst du im Process-Picker bei Cheat Engine aus?
03/18/2012 12:36 Masterscripter#35
Ich wähle den Prozess "aion.bin" aus. Und wenn ich bei Cheat engine dann als Adresse "game.dll" eingebe, bekomme ich auch den Wert.
03/18/2012 15:30 Skatefreaky#36
Ich hab das selbe Problem ... Ich bekomme es einfach nicht hin. Mein Script sieht so ähnlich aus wie deins

Code:
$Adresse = 0x2CA00000 + 0x0009C01C
Dim $Offset[2] = [0, 0x4]

    $Open = _MemoryOpen(ProcessExists("aion.bin"))
    If Not @error Then
        $Read = _MemoryRead($Adresse, $Open)
        $Value = _MemoryRead($Read + $Offset[1], $Open)
Ich muss nämlich auch immer den Wert mit Cheat engine suchen...:/
Tja dann war's das wohl mit der Bot Programmierung, wenn keiner helfen kann.
03/28/2012 15:38 Skatefreaky#37
Weiß denn hier auch keiner weiter?
03/31/2012 12:39 Masterscripter#38
Problem gelöst, Autoit Script musste zu x86 compiled werden, damit die "Game.dll" gefunden werden konnte.