NomadMemory, undefined function, Error

12/18/2013 23:22 grecostyler#1
Bei [CODE$ModuleBaseAddress = _MemoryModuleGetBaseAddress($iv_Pid, "OrcsMustDie2.exe")[/CODE] sagt AutoIt mir ERROR: _MemoryModuleGetBaseAddress(): undefined function.

kann mir wer helfen? D:


ganzer Code
12/19/2013 10:34 alpines#2
Du hast die Funktion _MemoryModuleGetBaseAddress() nicht in der Pointer.au3 sowie nicht in der Nomadmemory.au3.
Kopier dir das in deinen Source und es sollte klappen.
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)
        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
        For $i = 1 To $iModnum
            $aTemp =  DllCall($PSAPI, "dword", "GetModuleBaseNameW", "ptr", $hProcess, "ptr", Ptr(DllStructGetData($Modules, 1, $i)), "wstr", "", "dword", 260)
            If $aTemp[3] = $sModule Then
                DllClose($PSAPI)
                Return Ptr(DllStructGetData($Modules, 1, $i))
            EndIf
        Next
    EndIf

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

EndFunc
12/19/2013 13:50 grecostyler#3
oke schonmal danke dafür. Jetzt öffnet sich endlich das fenster. aber er überschreibt nicht mehr die Adress, glaube ich... Es tut sich einfach garnichts, habe auch schon den Hotkey geändert. (nochmal entschuldigung für das versehen des 2. postes)
12/19/2013 14:25 KDeluxe#4
Machen wir es gleich richtig:
Sollte das Script nicht funktionieren wäre ein Screenshot deines Pointers in CE hilfreich. Beachte, dass das erste Offset in CE das unterste Offset ist. Bist du dir außerdem sicher, dass das erste Offset im Script nicht auch eine Hexadezimalzahl ist?
12/19/2013 15:54 grecostyler#5
Oke also es kommt immer noch ein fehler: "Schreiben des Speichers nicht möglich (@error: 20)!"
Hier der screenshot vom Pointer.
(das sind neue pointer, weil ich die alten gelöscht habe und neue auprobiert habe, vergeblich)
12/19/2013 17:30 BladeTiger12#6
Was ist denn das...?
Deine Offsets stimmen nicht mal 1:1 überein.
woher nimmst du bitte das "124" oder "1EC" das steht garnicht dabei.


Sieht für mich so aus als könntest du nicht richtig raus schreiben.
Und du auch keine Ahnung hast wie so etwas funktioniert.
12/19/2013 17:44 grecostyler#7
das sind die werte die bei meinem pointer raus kamen...
das ist mein aktueller script:
12/19/2013 21:36 KDeluxe#8
Du hättest einfach das angepasste Script von BladeTiger12 kopieren müssen. Du gibst das erste Offset in Dezimalschreibweise an, müsstest es aber in Hexadezimalschreibweise angeben. Natürlich kannst du die Offsets auch in Dezimalschreibweise angeben, "0x124" entspricht aber nicht "124" sondern "292".
12/19/2013 21:48 grecostyler#9
Oke danke hab jetzt nochmal den Script von BladeTiger12 kopiert und es hat wieder funktioniert ^-^ viel vielen dank mit der info von hexdeximal und so *-*
Thanks to all <3 :D