vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 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 - Ein- und Umsteiger
WriteProcessMemory Funktion mit variabler Anzahl von Parametern 
Autor: ccman32
Datum: 19.01.13 19:48

Hallo,

der Betreff ist eventuell etwas irreführend aber ich brauche Hilfe bei Folgendem:
Erst einmal habe ich diese Funktionen bereits in einem Modul:
 <DllImport("kernel32.dll")> _
    Public Function ReadProcessMemory(ByVal hProcess As IntPtr, ByVal _
    lpBaseAddress As IntPtr, <[In](), Out()> ByVal buffer As Byte(), ByVal size _
    As UInt32, ByRef lpNumberOfBytesRead As IntPtr) As Int32
    End Function
 
    <DllImport("kernel32.dll")> _
    Public Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal _
    lpBaseAddress As IntPtr, <[In](), Out()> ByVal buffer As Byte(), ByVal size _
    As UInt32, ByRef lpNumberOfBytesWritten As IntPtr) As Int32
    End Function
 
    Public Function WriteInt32(ByVal P As Process, ByVal memAdr As Int32, ByVal _
      value As Integer) As Boolean
        Return WriteBytes(P, memAdr, BitConverter.GetBytes(value), 4)
    End Function
 
    Public Function ReadInt32(ByVal P As Process, ByVal memAdr As Int32) As _
      Integer
        Return BitConverter.ToInt32(ReadBytes(P, memAdr, 4), 0)
    End Function
 
    Public Function ReadBytes(ByVal P As Process, ByVal memAdr As Long, ByVal _
      bytesToRead As UInteger) As Byte()
        Dim ptrBytesRead As IntPtr
        Dim buffer As Byte() = New Byte(CInt(bytesToRead - 1)) {}
        ReadProcessMemory(P.Handle, New IntPtr(memAdr), buffer, bytesToRead, _
          ptrBytesRead)
        Return buffer
    End Function
 
    Private Function WriteBytes(ByVal P As Process, ByVal memAdr As Long, ByVal _
      bytes As Byte(), ByVal length As UInteger) As Boolean
        Dim bytesWritten As IntPtr
        Dim result As Integer = WriteProcessMemory(P.Handle, New IntPtr( _
          memAdr), bytes, length, bytesWritten)
        Return result <> 0
    End Function
Wenn ich nun per Pointer den Wert einer Addresse im RAM verändern will muss ich umständlicherweise z.B. schreiben:

 
Dim Adr1 As Int32 = Memory.ReadInt32(p, ADRESSE)
Adr1 = Memory.ReadInt32(p, Adr1 + OFFSET1)
Adr1 = Memory.ReadInt32(p, Adr1 + OFFSET2)
 WriteInt32(p, Adr1 + OFFSET3, WERT)
Ich hätte nun gerne eine Funktion, bei der es reicht, die Adresse + Offsets anzugeben, anstatt alles in 4 Zeilen Code einzeln durchzuführen. Ich habe aber Probleme dabei, da die Anzahl der Offsets ja von Pointer zu Pointer verschieden sein kann.
Die Funktion sollte später also ungefähr so funktionieren:
WriteIntPointer(p, Addresse, Offset1, Offset2, Offset3, Wert)
Kann mir da jemand helfen?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
WriteProcessMemory Funktion mit variabler Anzahl von Paramet...1.667ccman3219.01.13 19:48
Re: WriteProcessMemory Funktion mit variabler Anzahl von Par...727Manfred X19.01.13 20:11
Re: WriteProcessMemory Funktion mit variabler Anzahl von Par...742ccman3219.01.13 20:22
Re: WriteProcessMemory Funktion mit variabler Anzahl von Par...804Manfred X19.01.13 20:48

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