Hallo,
ich bin momentan dabei, einen hack trainer mit VB.NET für ein Spiel zu erstellen. Nun habe ich es zum Testen an ein paar Leute geschickt und ungefähr 50% sagen mir, sie würden als Fehlermeldung "Zugriff verweigert" bekommen. Hier der Code der Memory write Funktionen:
<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
Private 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(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 FunctionBrauche ich irgendwelche besonderen Rechte, die manch ein User nicht hat, um Variablen im Arbeitsspeicher zu verändern (Hauptsächlich benutze ich die WriteInt32 - Funktion)?
Beitrag wurde zuletzt am 05.12.12 um 20:12:55 editiert. |