Module ReadWritingMemory Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
Private Declare Function WriteProcessMemory1 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer Private Declare Function WriteProcessMemory2 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single Private Declare Function WriteProcessMemory3 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
Private Declare Function ReadProcessMemory1 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer Private Declare Function ReadProcessMemory2 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single Private Declare Function ReadProcessMemory3 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
Const PROCESS_ALL_ACCESS = &H1F0FF
Public Function WriteDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Integer, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean Try Dim lvl As Integer = Address For i As Integer = 1 To Level lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1) Next WriteInteger(Process, lvl, Value, nsize) Return True Catch ex As Exception Return False End Try End Function
Public Function ReadDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Integer Try Dim lvl As Integer = Address For i As Integer = 1 To Level lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1) Next Dim vBuffer As Integer vBuffer = ReadInteger(Process, lvl, nsize) Return vBuffer Catch ex As Exception
End Try End Function
Public Function WriteDMAFloat(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Single, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean Try Dim lvl As Integer = Address For i As Integer = 1 To Level lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1) Next WriteFloat(Process, lvl, Value, nsize) Return True Catch ex As Exception Return False End Try End Function
Public Function ReadDMAFloat(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Single Try Dim lvl As Integer = Address For i As Integer = 1 To Level lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1) Next Dim vBuffer As Single vBuffer = ReadFloat(Process, lvl, nsize) Return vBuffer Catch ex As Exception
End Try End Function
Public Function WriteDMALong(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Long, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean Try Dim lvl As Integer = Address For i As Integer = 1 To Level lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1) Next WriteLong(Process, lvl, Value, nsize) Return True Catch ex As Exception Return False End Try End Function
Public Function ReadDMALong(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Long Try Dim lvl As Integer = Address For i As Integer = 1 To Level lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1) Next Dim vBuffer As Long vBuffer = ReadLong(Process, lvl, nsize) Return vBuffer Catch ex As Exception
End Try End Function
Public Sub WriteNOPs(ByVal ProcessName As String, ByVal Address As Long, ByVal NOPNum As Integer) Dim C As Integer Dim B As Integer If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Sub End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Sub End If
B = 0 For C = 1 To NOPNum Call WriteProcessMemory1(hProcess, Address + B, &H90, 1, 0&) B = B + 1 Next C End Sub
Public Sub WriteXBytes(ByVal ProcessName As String, ByVal Address As Long, ByVal Value As String) If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Sub End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Sub End If
Dim C As Integer Dim B As Integer Dim D As Integer Dim V As Byte
B = 0 D = 1 For C = 1 To Math.Round((Len(Value) / 2)) V = Val("&H" & Mid$(Value, D, 2)) Call WriteProcessMemory1(hProcess, Address + B, V, 1, 0&) B = B + 1 D = D + 2 Next C
End Sub
Public Sub WriteInteger(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Integer, Optional ByVal nsize As Integer = 4) If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Sub End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Sub End If
Dim hAddress, vBuffer As Integer hAddress = Address vBuffer = Value WriteProcessMemory1(hProcess, hAddress, CInt(vBuffer), nsize, 0) End Sub
Public Sub WriteFloat(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Single, Optional ByVal nsize As Integer = 4) If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Sub End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Sub End If
Dim hAddress As Integer Dim vBuffer As Single
hAddress = Address vBuffer = Value WriteProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0) End Sub
Public Sub WriteLong(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Long, Optional ByVal nsize As Integer = 4) If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Sub End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Sub End If
Dim hAddress As Integer Dim vBuffer As Long
hAddress = Address vBuffer = Value WriteProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0) End Sub
Public Function ReadInteger(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Integer If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Function End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Function End If
Dim hAddress, vBuffer As Integer hAddress = Address ReadProcessMemory1(hProcess, hAddress, vBuffer, nsize, 0) Return vBuffer End Function
Public Function ReadFloat(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Single If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Function End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Function End If
Dim hAddress As Integer Dim vBuffer As Single
hAddress = Address ReadProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0) Return vBuffer End Function
Public Function ReadLong(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Long If ProcessName.EndsWith(".exe") Then ProcessName = ProcessName.Replace(".exe", "") End If Dim MyP As Process() = Process.GetProcessesByName(ProcessName) If MyP.Length = 0 Then MessageBox.Show(ProcessName & " isn't open!") Exit Function End If Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id) If hProcess = IntPtr.Zero Then MessageBox.Show("Failed to open " & ProcessName & "!") Exit Function End If
Dim hAddress As Integer Dim vBuffer As Long
hAddress = Address ReadProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0) Return vBuffer End Function
End Module
So nun möchte ich die 'WriteDMAInteger'-Funktion verwenden.
Dafür verwende ich jetzt folgenden Code:
Code:
WriteDMAInteger("Prozessname ohne .exe am Ende", &HDie Adresse des Pointers, --, "1000, 1)
Da wo die -- stehen, da weiß ich eben nicht in welcher Form ich die Offsets reinschreiben soll. Egal wie ich es versuche, es kommt immer folgender Fehler:
Code:
Der Wert vom Typ "Integer" kann nicht in "1-dimensionales Array von Integer" konvertiert werden.
Public Function WriteLongPointer(ByVal ProcessName As Process, ByVal Base As Integer, ByVal Offset As Short, ByVal Value As Long, ByVal Bytes As Integer)
Dim fullAddress As Long
Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)
ReadProcessMemory(processHandle, Base, RBuff, 4, Nothing)
fullAddress = RBuff + Offset
WriteProcessMemory(processHandle, fullAddress, Value, Bytes, Nothing)
CloseHandle(processHandle)
End Function
[FRAGE]VB Memoryediting mit Pointern 12/05/2011 - .NET Languages - 1 Replies Hallo Elitepvpers-Community,
ich habe mich heute mal mit Memoryediting in VB beschäftigt und bin auf dieses interessante Modul gestoßen:
Module ReadWritingMemory
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
Private Declare Function WriteProcessMemory1 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef...
[VB10] gamehacking via MemoryEditing (cheat Engine) 05/08/2011 - .NET Languages - 13 Replies hey com :)
ich habe ein tut hier im forum befolgt, wie man einfache vorteile im spiel erreichen kann wenn man adressen im Spiel mit Cheat Engine ändert
(z.B. unl. ammo)
Das konnte ich auch von meinem VB10 gecodeten Tool aus ändern, die Memory/Adressen Werte.
das sich jedoch die adressen bei jedem neustart des spiels ändern, wollte ich fragen:
ob man nicht gezielte adressen nehmen kann, die auch nach einem neustart des spiels gleich bleiben ( ohne Pointer ?, ich check das nicht mit...
[VB] Pointer+Offset Einbinden 12/02/2010 - .NET Languages - 19 Replies Guten Tag Alle Zusammen !
Folgendes Problem :
Wie Baue ich diesen Pointer von CheatEngine in Mein Visual Basic EIn!
http://s10.directupload.net/images/101130/t4fp524 r.png
Hier Code von VB da IST KEI POINTER DA IST EINFACH DIE NORMALER ADRESSE ABER WIE BAUE Ich den POINTER und offset ein ?
help with pointer+offset 11/28/2010 - Last Chaos - 0 Replies this is my code in c++
__inline ULONG_PTR ReadPointer(ULONG_PTR* ulBase, INT nOffset)
{
if (!IsBadReadPtr((VOID*)ulBase, sizeof(ULONG_PTR)))
{
if (!IsBadReadPtr((VOID*)((*(ULONG_PTR*)ulBase)+nOffs et), sizeof(ULONG_PTR)))
{
return *(ULONG_PTR*)((*(ULONG_PTR*)ulBase)+nOffset);
}
Pointer offset suche... help plz 07/09/2009 - AutoIt - 4 Replies hallo, screeni im Anhang. Finde keinen Pointer und Offset. Leben Energie usw hab ich schnell in Warhammer gefunden.
Habe eine Adresse gefunden die 1 ist wenn ich einen Gegner angeklickt habe und die 0 ist wenn ich keinen Gegner angeklickt habe. Die will ich gern verwenden. Die scheint aber jedenmal dynamisch zu sein.
vielleicht kann ja wer helfen. Danke cya
PicFront - Ihr innovativer Bildhoster