Ergebnis 1 bis 8 von 8
  1. #1
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard [VB6]Game Hack mit Multilevelpointer (Problem)

    Hier ist der Code der nicht richtig funzt:

    Dim Value As Long
    Dim Offset As Long
    Dim Offset2 As Long
    Dim Offset3 As Long
    Dim Adress1 As Long
    Dim Adress2 As Long
    Call ReadALong("DEVIL MAY CRY DX10", &H18C1E58, Value)
    Offset = &H18C1E58 + &H0
    Call ReadALong("DEVIL MAY CRY DX10", Offset, Adress1)
    Offset2 = "&H" & Offset + &H24
    Call ReadALong("DEVIL MAY CRY DX10", Offset2, Adress2)
    Offset3 = "&H" & Offset2 + &H1F24
    Call WriteALong("DEVIL MAY CRY DX10", Offset3, 176256512)




    Hab ich da im Ablauf einen Fehler?
    In Cheat Engine funzt der MLP, aber in meinem Programm leider nicht.
    Ist für DMC 4.

    Mfg Bi0sh0k
    Geändert von Bi0sh0k (26.08.2010 um 22:20 Uhr)

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



  2. #2
    Transpinguin Avatar von IRET
    Registriert seit
    02.09.2008
    Beiträge
    1.295

    Standard

    @OpCodez:
    Code:
    Public Function WriteALong(gamewindowtext As String, address As Long, value As Long)
    Dim hwnd As Long
    Dim pid As Long
    Dim phandle As Long
    hwnd = FindWindow(vbNullString, gamewindowtext) If (hwnd = 0)
    Then
    MsgBox "The Game Is Not Working", vbCritical, "Error"
    End
    Exit Function
    End If
    GetWindowThreadProcessId hwnd, pid phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0)
    Then
    MsgBox "Can't get ProcessId", vbCritical, "Error"
    Exit Function
    EndIf
    WriteProcessMemory phandle, address, value, 4, 0&
    CloseHandle hProcess
    End Function
    Also eine Funktion die öffnet und schreibt und wieder schließt.
    Sehr dumm das so zu machen.

    (Ich hasse VB XD)

    Zu deinen Problem:
    Kein Error ,keine Analyse?
    Wenn du nichts falsch gemacht hast ,kann nur die Adresse falsch sein.

    //Edit:
    Mach mal den Debugger an und schau ob die Adressen drin auch noch passen.
    Du musst sie natürlich als Hex übergeben (kA ob du das machst ,da ich kein VB kann)
    Geändert von IRET (26.08.2010 um 22:34 Uhr)

  3. #3
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard

    Also ich habe einen Pointer 018C1E58.
    In Cheat Engine wird dann das Offset 0 zu dieser Adresse hinzugefügt was mich wieder zu einer anderen Adresse bringt die mit dem Offset 24 addiert wird, die dann wieder auf eine andere Adresse pointet di mit dem Offset 1F24 addiert wird, die wiederrum auf die eigentlich gesuchte Adresse leitet.

    Code:
    Dim Value As Long
    Dim Offset As Long
    Dim Offset2 As Long
    Dim Offset3 As Long
    Dim Adress1 As Long
    Dim Adress2 As Long
    Call ReadALong("DEVIL MAY CRY DX10", &H18C1E58, Value)
    Offset = &H18C1E58 + &H0
    Call ReadALong("DEVIL MAY CRY DX10", Offset, Adress1)
    Offset2 = "&H" & Offset + &H24
    Call ReadALong("DEVIL MAY CRY DX10", Offset2, Adress2)
    Offset3 = "&H" & Offset2 + &H1F24
    Call WriteALong("DEVIL MAY CRY DX10", Offset3, 176256512)
    Code:
    Public Const PROCESS_ALL_ACCESS = &H1F0FFF
    Dim f1holder As Integer
    Dim timer_pos As Long
    'API Declaration
    Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
    Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
    Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long
    Public Declare Function GetKeyPress Lib "user32" Alias "GetAsyncKeyState" (ByVal key As Long) As Integer
    Public Declare Function ReadProcessMem Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
    Public Function WriteAByte(gamewindowtext As String, address As Long, Value As Byte)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    End If
    WriteProcessMemory phandle, address, Value, 1, 0&
    CloseHandle hProcess
    End Function
    Public Function WriteAnInt(gamewindowtext As String, address As Long, Value As Integer)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    
    
    
    End If
    WriteProcessMemory phandle, address, Value, 2, 0&
    CloseHandle hProcess
    End Function
    Public Function WriteALong(gamewindowtext As String, address As Long, Value As Long)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    
    
    
    End If
    WriteProcessMemory phandle, address, Value, 4, 0&
    CloseHandle hProcess
    End Function
    Public Function ReadAByte(gamewindowtext As String, address As Long, valbuffer As Byte)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    
    
    
    End If
    ReadProcessMem phandle, address, valbuffer, 1, 0&
    CloseHandle hProcess
    End Function
    Public Function ReadAnInt(gamewindowtext As String, address As Long, valbuffer As Integer)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    
    
    
    End If
    ReadProcessMem phandle, address, valbuffer, 2, 0&
    CloseHandle hProcess
    End Function
    Public Function ReadALong(gamewindowtext As String, address As Long, valbuffer As Long)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    
    
    
    End If
    ReadProcessMem phandle, address, valbuffer, 4, 0&
    CloseHandle hProcess
    End Function
    Public Function ReadAFloat(gamewindowtext As String, address As Long, valbuffer As Single)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    
    
    
    End If
    ReadProcessMem phandle, address, valbuffer, 4, 0&
    CloseHandle hProcess
    End Function
    Public Function WriteAFloat(gamewindowtext As String, address As Long, Value As Single)
    Dim hWnd As Long
    Dim pid As Long
    Dim phandle As Long
    hWnd = FindWindow(vbNullString, gamewindowtext)
    GetWindowThreadProcessId hWnd, pid
    phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If (phandle = 0) Then
    
    
    
    
    End If
    WriteProcessMemory phandle, address, Value, 4, 0&
    CloseHandle hProcess
    End Function
    @fuckinghot19 : Es funzt in Cheat Engine!
    Ich hab en Codingfehler irgendwo drin. Ich hatte das selbe Prob schonmal aber ich hatte ne zeitlang aufgehört zu proggen und kann mich nicht mehr genau erinnern wie ich das gelöst hab.
    Geändert von Bi0sh0k (26.08.2010 um 22:35 Uhr)

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



  4. #4
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard

    Offset3 = "&H" & (&H" & (&H18C1E58 + &H0) + &H24) + &H1F24

    Da bekomm ich einen Überlauf. :/

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



  5. #5
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard

    Funzt irgendwie nix. Der Syntax ist aber ok.
    Irgendwas hatte ich damals vergessen das weiß ich.

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



  6. #6
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard

    Ja und das Offset (die eigentlich gesuchte adresse) bekommt dann einen wert zugeschrieben um z.B. die Zauberkraft zu erhöhen durch diesen wert.

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



  7. #7
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard

    offset1 = 0x18C1E58;
    offset2 = *offset1 + 0x24;
    offset3 = *offset2 + 0x1F24;
    wert = *offset3;
    Das wäre dann:

    offset1 = &H18C1E58
    offset2 = offset1 + &H24
    offset3 = offset2 + &H1F24
    wert = offset3
    Call WriteALong ("DEVIL MAY CRY 4 DX10")


    Geht aber auch nicht. :/
    Geändert von Bi0sh0k (27.08.2010 um 19:39 Uhr)

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



  8. #8
    Stanley Jobson Avatar von Bi0sh0k
    Registriert seit
    17.12.2007
    Beiträge
    773

    Standard

    /Edit
    Hat sich erledigt!

    Dim Value As Long
    Dim Offset As Long
    Dim Adress As Long

    Call ReadALong("DEVIL MAY CRY DX10", &H18C1E58, Adress)
    Call ReadALong("DEVIL MAY CRY DX10", Adress, Value)
    Offset = Value + &H24
    Call ReadALong("DEVIL MAY CRY DX10", Offset, Value)
    Offset = Value + &H1F24
    Call WriteALong("DEVIL MAY CRY DX10", Offset, 176256512)

    /// 018C1E58 hat als Offset 0, da sich aber durch die Addition nichts ändert, wird der Value der Adresse in der nächsten Zeile direkt als Adresse benutzt und deren Wert ausgelesen, der dann mit 24 addiert wird, wodurch wir zu einer anderen Adresse kommen, deren Wert mit 1F24 addiert wird die uns zu der eigentlich gesuchten Adresse führt, die mit dem Befehl WriteALong einen anderen Wert in den Value der Adresse schreibt.

    Das obrige Beispiel ist für die manipulation der Zauberkraft in DMC 4 für die DX10 Version.

    MFG Bi0
    Geändert von Bi0sh0k (28.08.2010 um 01:00 Uhr)

    _______________________________

    GFX Showroom
    Klick mich!
    _______________________________



Ähnliche Themen

  1. für gta 4 ein game hack
    Von bigchrissi im Forum Game Modifications
    Antworten: 7
    Letzter Beitrag: 19.06.2010, 07:20
  2. How To 'hack' a Flash Game
    Von KingM2o im Forum Video-Tutorials
    Antworten: 50
    Letzter Beitrag: 19.07.2008, 16:06

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •