Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Class trainer
- Private GameProc As String = ""
- Private Function OpenGame() As IntPtr
- If System.Diagnostics.Process.GetProcessesByName(GameProc).Length = 1 Then
- Return System.Diagnostics.Process.GetProcessesByName(GameProc)(0).Handle
- End If
- Return New IntPtr(0)
- End Function
- Public Enum ProcessAccessFlags As ULong
- All = &H1F0FFF
- Terminate = &H1
- CreateThread = &H2
- Operation = &H8
- Read = &H10
- Write = &H20
- DupHandle = &H40
- SetInformation = &H200
- QueryInformation = &H400
- Synchronize = &H100000
- End Enum
- <Runtime.InteropServices.DllImport("kernel32.dll")> _
- Private Shared Function OpenProcess(dwDesiredAccess As ProcessAccessFlags, <Runtime.InteropServices.MarshalAs(Runtime.InteropServices.UnmanagedType.Bool)> bInheritHandle As Boolean, dwProcessId As Integer) As IntPtr
- End Function
- <Runtime.InteropServices.DllImport("kernel32.dll")> _
- Private Shared Function CloseHandle(hObject As IntPtr) As Boolean
- End Function
- <Runtime.InteropServices.DllImport("kernel32.dll")> _
- Private Shared Function ReadProcessMemory(hProcess As IntPtr, lpBaseAddress As IntPtr, <Runtime.InteropServices.In, Runtime.InteropServices.Out> buffer As Byte(), size As UInt32, ByRef lpNumberOfBytesWritten As IntPtr) As Int32
- End Function
- <Runtime.InteropServices.DllImport("kernel32.dll")> _
- Private Shared Function WriteProcessMemory(hProcess As IntPtr, lpBaseAddress As IntPtr, <Runtime.InteropServices.In, Runtime.InteropServices.Out> buffer As Byte(), size As UInt32, ByRef lpNumberOfBytesWritten As IntPtr) As Int32
- End Function
- Public Function Process_Handle(ProcessName As String) As Boolean
- GameProc = ProcessName
- If System.Diagnostics.Process.GetProcessesByName(ProcessName).Length = 1 Then
- Return True
- End If
- Return False
- End Function
- #Region "Write Stuff"
- Public Sub WriteString(Address As Long, Text As String, Optional Length As Long = -1)
- If Length = -1 Then
- Length = Text.Length
- End If
- Dim Buffer As Byte() = New System.Text.ASCIIEncoding().GetBytes(Text)
- Dim Zero As IntPtr = IntPtr.Zero
- WriteProcessMemory(OpenGame(), New IntPtr(Address), Buffer, CUInt(Length), Zero)
- End Sub
- Public Sub WriteLong(Address As Long, Value As Long)
- Dim buffer As Byte() = BitConverter.GetBytes(Value)
- Dim R As IntPtr
- WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
- End Sub
- Public Sub WriteUILong(Address As UInteger, Value As UInteger)
- Dim buffer As Byte() = BitConverter.GetBytes(Value)
- Dim R As IntPtr
- WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
- End Sub
- Public Sub WriteFloat(Address As Integer, Value As Single)
- Dim buffer As Byte() = BitConverter.GetBytes(Value)
- Dim R As IntPtr
- WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
- End Sub
- Public Sub WriteBytes(Address As Long, ByteArray As Byte())
- Dim buffer As Byte() = ByteArray
- Dim R As IntPtr
- WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(buffer.Length), R)
- End Sub
- #End Region
- #Region "Read Stuff"
- Public Function ReadString(Address As Integer, Length As Integer) As String
- Dim buffer As Byte() = New Byte(Length - 1) {}
- Dim R As IntPtr
- ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(buffer.Length), R)
- Return New System.Text.ASCIIEncoding().GetString(buffer, 0, Length)
- End Function
- Public Function ReadInt(Address As Integer) As Integer
- Dim buffer As Byte() = New Byte(3) {}
- Dim R As IntPtr
- ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
- Return BitConverter.ToInt32(buffer, 0)
- End Function
- Public Function ReadUInt(Address As UInteger) As UInteger
- Dim buffer As Byte() = New Byte(3) {}
- Dim R As IntPtr
- ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
- Return BitConverter.ToUInt32(buffer, 0)
- End Function
- Public Function ReadFloat(Address As UInteger) As Single
- Dim buffer As Byte() = New Byte(7) {}
- Dim R As IntPtr
- ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
- Return BitConverter.ToSingle(buffer, 0)
- End Function
- Public Function ReadBytes(Address As Integer, BytesLength As Integer) As Byte()
- Dim buffer As Byte() = New Byte(BytesLength - 1) {}
- Dim R As IntPtr
- ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(buffer.Length), R)
- Return buffer
- End Function
- #End Region
- #Region "Pointers"
- Public Function BaseAddress(Module_Name As String) As Integer
- Try
- If System.Diagnostics.Process.GetProcessesByName(GameProc).Length <> 0 Then
- For Each [Mod] As System.Diagnostics.ProcessModule In System.Diagnostics.Process.GetProcessesByName(GameProc)(0).Modules
- If [Mod].ModuleName = Module_Name Then
- Return [Mod].BaseAddress.ToInt32()
- End If
- Next
- Return 0
- Else
- Return 0
- End If
- Catch
- Console.WriteLine("Base Address Error")
- Return 0
- End Try
- End Function
- Public Function Pointers([Module] As String, PointersX As Integer()) As Integer
- Dim Base As Integer = BaseAddress([Module]) + PointersX(0)
- Dim Runner As Integer = ReadInt(Base) + PointersX(1)
- Dim i As Integer = 2
- While i <> PointersX.Length - 2
- Runner = ReadInt(Runner) + PointersX(i)
- i += 1
- End While
- Return Runner
- End Function
- #End Region
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement