Advertisement
Guest User

Untitled

a guest
Dec 27th, 2013
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 5.96 KB | None | 0 0
  1. Public Class trainer
  2.     Private GameProc As String = ""
  3.     Private Function OpenGame() As IntPtr
  4.         If System.Diagnostics.Process.GetProcessesByName(GameProc).Length = 1 Then
  5.             Return System.Diagnostics.Process.GetProcessesByName(GameProc)(0).Handle
  6.         End If
  7.         Return New IntPtr(0)
  8.     End Function
  9.     Public Enum ProcessAccessFlags As ULong
  10.         All = &H1F0FFF
  11.         Terminate = &H1
  12.         CreateThread = &H2
  13.         Operation = &H8
  14.         Read = &H10
  15.         Write = &H20
  16.         DupHandle = &H40
  17.         SetInformation = &H200
  18.         QueryInformation = &H400
  19.         Synchronize = &H100000
  20.     End Enum
  21.     <Runtime.InteropServices.DllImport("kernel32.dll")> _
  22.     Private Shared Function OpenProcess(dwDesiredAccess As ProcessAccessFlags, <Runtime.InteropServices.MarshalAs(Runtime.InteropServices.UnmanagedType.Bool)> bInheritHandle As Boolean, dwProcessId As Integer) As IntPtr
  23.     End Function
  24.     <Runtime.InteropServices.DllImport("kernel32.dll")> _
  25.     Private Shared Function CloseHandle(hObject As IntPtr) As Boolean
  26.     End Function
  27.     <Runtime.InteropServices.DllImport("kernel32.dll")> _
  28.     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
  29.     End Function
  30.     <Runtime.InteropServices.DllImport("kernel32.dll")> _
  31.     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
  32.     End Function
  33.  
  34.  
  35.     Public Function Process_Handle(ProcessName As String) As Boolean
  36.         GameProc = ProcessName
  37.         If System.Diagnostics.Process.GetProcessesByName(ProcessName).Length = 1 Then
  38.             Return True
  39.         End If
  40.         Return False
  41.     End Function
  42. #Region "Write Stuff"
  43.     Public Sub WriteString(Address As Long, Text As String, Optional Length As Long = -1)
  44.         If Length = -1 Then
  45.             Length = Text.Length
  46.         End If
  47.         Dim Buffer As Byte() = New System.Text.ASCIIEncoding().GetBytes(Text)
  48.         Dim Zero As IntPtr = IntPtr.Zero
  49.         WriteProcessMemory(OpenGame(), New IntPtr(Address), Buffer, CUInt(Length), Zero)
  50.     End Sub
  51.     Public Sub WriteLong(Address As Long, Value As Long)
  52.         Dim buffer As Byte() = BitConverter.GetBytes(Value)
  53.         Dim R As IntPtr
  54.         WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
  55.     End Sub
  56.     Public Sub WriteUILong(Address As UInteger, Value As UInteger)
  57.         Dim buffer As Byte() = BitConverter.GetBytes(Value)
  58.         Dim R As IntPtr
  59.         WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
  60.     End Sub
  61.     Public Sub WriteFloat(Address As Integer, Value As Single)
  62.         Dim buffer As Byte() = BitConverter.GetBytes(Value)
  63.         Dim R As IntPtr
  64.         WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
  65.     End Sub
  66.     Public Sub WriteBytes(Address As Long, ByteArray As Byte())
  67.         Dim buffer As Byte() = ByteArray
  68.         Dim R As IntPtr
  69.         WriteProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(buffer.Length), R)
  70.     End Sub
  71. #End Region
  72. #Region "Read Stuff"
  73.     Public Function ReadString(Address As Integer, Length As Integer) As String
  74.         Dim buffer As Byte() = New Byte(Length - 1) {}
  75.         Dim R As IntPtr
  76.         ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(buffer.Length), R)
  77.         Return New System.Text.ASCIIEncoding().GetString(buffer, 0, Length)
  78.     End Function
  79.     Public Function ReadInt(Address As Integer) As Integer
  80.         Dim buffer As Byte() = New Byte(3) {}
  81.         Dim R As IntPtr
  82.         ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
  83.         Return BitConverter.ToInt32(buffer, 0)
  84.     End Function
  85.     Public Function ReadUInt(Address As UInteger) As UInteger
  86.         Dim buffer As Byte() = New Byte(3) {}
  87.         Dim R As IntPtr
  88.         ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
  89.         Return BitConverter.ToUInt32(buffer, 0)
  90.     End Function
  91.     Public Function ReadFloat(Address As UInteger) As Single
  92.         Dim buffer As Byte() = New Byte(7) {}
  93.         Dim R As IntPtr
  94.         ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(4), R)
  95.         Return BitConverter.ToSingle(buffer, 0)
  96.     End Function
  97.     Public Function ReadBytes(Address As Integer, BytesLength As Integer) As Byte()
  98.         Dim buffer As Byte() = New Byte(BytesLength - 1) {}
  99.         Dim R As IntPtr
  100.         ReadProcessMemory(OpenGame(), New IntPtr(Address), buffer, CUInt(buffer.Length), R)
  101.         Return buffer
  102.     End Function
  103. #End Region
  104. #Region "Pointers"
  105.     Public Function BaseAddress(Module_Name As String) As Integer
  106.         Try
  107.             If System.Diagnostics.Process.GetProcessesByName(GameProc).Length <> 0 Then
  108.                 For Each [Mod] As System.Diagnostics.ProcessModule In System.Diagnostics.Process.GetProcessesByName(GameProc)(0).Modules
  109.                     If [Mod].ModuleName = Module_Name Then
  110.                         Return [Mod].BaseAddress.ToInt32()
  111.                     End If
  112.                 Next
  113.                 Return 0
  114.             Else
  115.                 Return 0
  116.             End If
  117.         Catch
  118.             Console.WriteLine("Base Address Error")
  119.             Return 0
  120.         End Try
  121.     End Function
  122.     Public Function Pointers([Module] As String, PointersX As Integer()) As Integer
  123.         Dim Base As Integer = BaseAddress([Module]) + PointersX(0)
  124.         Dim Runner As Integer = ReadInt(Base) + PointersX(1)
  125.         Dim i As Integer = 2
  126.         While i <> PointersX.Length - 2
  127.             Runner = ReadInt(Runner) + PointersX(i)
  128.             i += 1
  129.         End While
  130.  
  131.         Return Runner
  132.     End Function
  133. #End Region
  134. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement