Solitär Memoryhacking

06/06/2014 12:06 sezer0012#1
Hallo, ich habe den Basepointer von Solitär gefunden, auch 2 Offsets.
In CE funktioniert alles auch beim neustart von Solitär.
Ich möchte aber einen Trainer erstellen in AutoIt.

Mit normalen Pointern geht mein Script, aber ich weiß nicht wie ich den Basepointer einfügen soll mit den 2 Offsets.

Code:

Basepointer: solitaire.exe+BAFA8
Offsets: 50 und 14
06/06/2014 14:01 YatoDev#2
_MemoryModuleGetBaseAddress oder so heist die funktion glaube ich.
Ein blick in die udf hätte gereicht ;)
06/06/2014 15:36 sezer0012#3
Beispiel bitte :(
06/06/2014 18:54 KDeluxe#4
[Only registered and activated users can see links. Click Here To Register...]
Code:
#AutoIt3Wrapper_UseX64=n ; 32 Bit application
;~ #AutoIt3Wrapper_UseX64=y ; 64 Bit application

#RequireAdmin
#include "KDMemory.au3"

Const $processName = "solitaire.exe", $moduleName = $processName
Const $baseOffset = 0x000BAFA8
Const $offsets[2] = [0x50, 0x14]

$processId = ProcessExists($processName)
If $processId == 0 Then
    MsgBox(48, "Error", "'" & $processName & "' is not running!")
Else
    $handles = _KDMemory_OpenProcess($processId)
    If @error Then
        MsgBox(48, "Error", "Can't open '" & $processName & "'!" & @CRLF & "@error: " & @error)
    Else
        $baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $baseOffset
        If @error Then
            MsgBox(48, "Error", "Can't get ModuleBaseAddress ('" & $moduleName & "')!" & @CRLF & "@error: " & @error & ", @extended: " & @extended)
        Else
            $value = InputBox("Solitaire Hack", "Enter the score:", 0)
            If @error Or Not IsInt($value) Then
                MsgBox(16, "Error", "The entered value is invalid.")
            Else
                $writtenAddress = _KDMemory_WriteProcessMemory($handles, $baseAddress, "DWORD", 5000, $offsets)
                If @error Then MsgBox(48, "Error", "Can't write memory!" & @CRLF & "@error: " & @error & ", @extended: " & @extended)
            EndIf
        EndIf
        _KDMemory_CloseHandles($handles)
    EndIf
EndIf
Evtl. musst du die Reihenfolge der Offsets ändern. Das Offset, welches in CE unten angezeigt wird, ist das erste Offset.


Das bisschen was du hattest ist vollkommen falsch. Außerdem solltest du Fehler beachten und nicht einfach ignorieren, da die Anwendung sonst abstürzt.
06/06/2014 19:00 sezer0012#5
@KDeluxe , bekomme ich die .au3

Bekomme einen Error: Can't get ModuleBaseAdress @error 12
06/06/2014 22:54 KDeluxe#6
Das liegt daran, dass der Aufruf von CreateToolhelp32Snapshot() fehlschlägt. Wichtig wäre hier noch die @extended Information. Du kannst [Only registered and activated users can see links. Click Here To Register...] die Bedeutung des Fehlercodes (@extended) nachlesen. Mehr Informationen zum Betriebssystem und dem Spiel wären außerdem auch notwendig.
06/06/2014 22:59 YatoDev#7
Quote:
Originally Posted by sezer0012 View Post
Beispiel bitte :(
immer noch nicht in die udf geschaut?
06/06/2014 23:14 sezer0012#8
Hier ganze Fehlermeldung:
Can't get ModuleBaseAddress ('solitaire.exe')!
@error: 12, @extended: 299
06/07/2014 10:33 KDeluxe#9
Weitere Informationen zum Betriebssystem und Spiel fehlen weiterhin. Wobei es in diesem Fall egal ist, wenn du Hilfe möchtest solltest du die gestellten Fragen aber möglichst gut beantworten.

[Only registered and activated users can see links. Click Here To Register...]
Quote:
If the specified process is a 64-bit process and the caller is a 32-bit process, this function fails and the last error code is ERROR_PARTIAL_COPY (299).
Was heißt das jetzt für dich? In meinem Script die erste Zeile kommentieren bzw. löschen und die zweite Zeile auskommentieren.
06/07/2014 16:04 sezer0012#10
Habe eine 64 Bit Version, aber geht leider trotzdem nicht
06/07/2014 16:24 KDeluxe#11
Sowohl bei deiner letzten auch als bei deiner jetzigen Antwort fehlt es an essentiellen Informationen. Niemand kann wirklich wahrsagen, du musst schon mehr Informationen bekannt geben.
"geht leider trotzdem nicht" Was soll man damit schon anfangen können?