vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Adresse im Speicher lesen (ReadProcessMemory) 
Autor: henrikl2000
Datum: 16.03.16 16:58

Hallo,

Ich versuche dieser Adresse 141887378 in ein Spiel (Project Cars) zu lesen. Das Spiel ist ein 64 bit Applikation. Die Adresse wurde mit Hilfe von CheatEngine gefunden.
CheatEngine zeigt auf die obengenannte Adresse ein Wert. Die Adresse ist damit OK.

Das Resultat sollte eine Zeit als Single anzeigen. Zeigt aber leider 0.
In ein anderes Spiel Race07 (32 bit Applikation) habe ich keine Probleme diese Adresse 14149844 zu lesen.
Die Adresse von Project Cars ist allerdings länger 9 stellig. Die vom Race07 8 stellig.
Hat es etwas mit 64 bit zu tun und was soll ich ändern?

Danke im Voraus,
Henrik
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Runtime.InteropServices
 
Friend Class ProcessMemoryReaderApi
    Public Const PROCESS_VM_READ As UInteger = &H10
 
    <DllImport("kernel32.dll")> _
    Public Shared Function CloseHandle(hObject As IntPtr) As Integer
    End Function
 
    <DllImport("kernel32.dll")> _
    Public Shared Function OpenProcess(dwDesiredAccess As UInteger, _
    bInheritHandle As Integer, dwProcessId As UInteger) As IntPtr
    End Function
 
    <DllImport("kernel32.dll")> _
    Public Shared Function ReadProcessMemory(hProcess As IntPtr, lpBaseAddress _
    As IntPtr, <[In](), Out()> buffer As Byte(), size As UInteger, ByRef _
    lpNumberOfBytesRead As IntPtr) As Integer
    End Function
 
    <DllImport("kernel32.dll")> _
    Public Shared Function WriteProcessMemory(hProcess As IntPtr, lpBaseAddress _
    As IntPtr, lpBuffer As Byte(), nSize As UInteger, ByRef _
    lpNumberOfBytesWritten As IntPtr) As Integer
    End Function
End Class
 
 
Imports System.Collections.Generic
Imports System.Text
Imports System.Diagnostics
 
Public Class ProcessMemoryReader
    ' Fields
    Private m_hProcess As IntPtr = IntPtr.Zero
    Private m_ReadProcess As Process
 
    ' Methods
    Public Sub CloseHandle()
        If ProcessMemoryReaderApi.CloseHandle(Me.m_hProcess) = 0 Then
            Throw New Exception("CloseHandle failed")
        End If
    End Sub
 
    Public Sub OpenProcess()
        Me.m_hProcess = ProcessMemoryReaderApi.OpenProcess(&H1F0FFF, 1, CUInt( _
          Me.m_ReadProcess.Id))
    End Sub
 
    Public Function ReadProcessMemory(MemoryAddress As IntPtr, bytesToRead As _
      UInteger, ByRef bytesReaded As Integer) As Byte()
        Dim ptr As IntPtr
        Dim buffer As Byte() = New Byte(CInt(bytesToRead - 1)) {}
        ProcessMemoryReaderApi.ReadProcessMemory(Me.m_hProcess, MemoryAddress, _
          buffer, bytesToRead, ptr)
        bytesReaded = ptr.ToInt32()
        Return buffer
    End Function
 
    Public Function WriteProcessMemory(MemoryAddress As IntPtr, Wert As Single, _
      bytesToWrite As UInteger) As Integer
        Dim ptr As IntPtr
        Dim Buffer As Byte() = BitConverter.GetBytes(CSng(Wert))
        Dim h As Integer = ProcessMemoryReaderApi.WriteProcessMemory( _
          m_hProcess, CType(MemoryAddress, IntPtr), Buffer, bytesToWrite, ptr)
        Return h
    End Function
 
    Public Function WriteProcessMemoryINT(MemoryAddress As IntPtr, Wert As _
      Int32, bytesToWrite As UInteger) As Integer
        Dim ptr As IntPtr
        Dim Buffer As Byte() = BitConverter.GetBytes(CType(Wert, Int32))
        Dim h As Integer = ProcessMemoryReaderApi.WriteProcessMemory( _
          m_hProcess, CType(MemoryAddress, IntPtr), Buffer, bytesToWrite, ptr)
        Return h
    End Function
 
    ' Properties
    Public Property ReadProcess() As Process
        Get
            Return Me.m_ReadProcess
        End Get
        Set(value As Process)
            Me.m_ReadProcess = value
        End Set
    End Property
End Class
Teil 2 folgt
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Adresse im Speicher lesen (ReadProcessMemory)2.062henrikl200016.03.16 16:58
Re: Adresse im Speicher lesen (ReadProcessMemory)906henrikl200016.03.16 16:58
Re: Adresse im Speicher lesen (ReadProcessMemory)925Manfred X16.03.16 17:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel