[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($iPIDThen Return SetError(100)

    If 
Not IsString($sModuleThen Return SetError(200)

    
Local   $PSAPI DllOpen("psapi.dll")

    ;
Get Process Handle
    Local   $hProcess
    Local   $PERMISSION 
BitOR(0x00020x04000x00080x00100x0020) ; CREATE_THREADQUERY_INFORMATIONVM_OPERATIONVM_READVM_WRITE

    
If $iPID 0 Then
        Local $hProcess 
DllCall("kernel32.dll""ptr""OpenProcess""dword"$PERMISSION"int"0"dword"$iPID)
        
MsgBox(0"openprocess", @error)
        If 
$hProcess[0Then
            $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($Modules1$i)), "wstr""""dword"260)
            
$sModules &= $aTemp[3] &  @crlf
            
If $aTemp[3] = $sModule Then
                DllClose
($PSAPI)
                Return 
Ptr(DllStructGetData($Modules1$i))
            EndIf
        
Next
        MsgBox
(0"modules"$sModules)
    EndIf

    
DllClose($PSAPI)
    Return 
SetError(-100)

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.