Advertisement
Guest User

WriteReadMemory

a guest
Mar 28th, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 12.31 KB | None | 0 0
  1. 'VB.NET De Module
  2. 'Author : Cless
  3. 'How to use Read/Write Pointer
  4. 'Example Read
  5. '       Me.Text = ReadPointerInteger(Game exe name, &HPointer,&HOffset).ToString()
  6. '
  7. '       Me.Text = ReadPointerInteger("gta_sa", &HB71A38,&H540).ToString()
  8. '       Or
  9. '       Me.Text = ReadPointerInteger("gta_sa", &HB71A38,&H540,&H544).ToString()
  10. 'Example Write
  11. '       WritePointerInteger(Game exe name,&HPointer,Value,&HOffset)
  12. '
  13. '       WritePointerInteger("gta_sa",&HB71A38,1000,&H540)
  14. '       Or
  15. '       WritePointerInteger("gta_sa",&HB71A38,1000,&H540, &H544)
  16. Imports System.Runtime.InteropServices
  17. Imports System.IO
  18. Module Trainer
  19.  
  20.     Private Declare Function ReadMemoryByte Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Byte, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Byte
  21.     Private Declare Function ReadMemoryInteger Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Integer, Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Integer
  22.     Private Declare Function ReadMemoryFloat Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Single, Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Single
  23.     Private Declare Function ReadMemoryDouble Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Double, Optional ByVal Size As Integer = 8, Optional ByRef Bytes As Integer = 0) As Double
  24.  
  25.     Private Declare Function WriteMemoryByte Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Byte, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Byte
  26.     Private Declare Function WriteMemoryInteger Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Integer, Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Integer
  27.     Private Declare Function WriteMemoryFloat Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Single, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Single
  28.     Private Declare Function WriteMemoryDouble Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Double, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Double
  29.  
  30.     Public Function ReadByte(ByVal EXENAME As String, ByVal Address As Integer) As Byte
  31.         Dim Value As Byte
  32.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  33.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  34.             If Handle <> 0 Then
  35.                 ReadMemoryByte(Handle, Address, Value)
  36.             End If
  37.         End If
  38.         Return Value
  39.     End Function
  40.  
  41.     Public Function ReadInteger(ByVal EXENAME As String, ByVal Address As Integer) As Integer
  42.         Dim Value As Integer
  43.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  44.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  45.             If Handle <> 0 Then
  46.                 ReadMemoryInteger(Handle, Address, Value)
  47.             End If
  48.         End If
  49.         Return Value
  50.     End Function
  51.  
  52.     Public Function ReadFloat(ByVal EXENAME As String, ByVal Address As Integer) As Single
  53.         Dim Value As Single
  54.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  55.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  56.             If Handle <> 0 Then
  57.                 ReadMemoryFloat(Handle, Address, Value)
  58.             End If
  59.         End If
  60.         Return Value
  61.     End Function
  62.  
  63.     Public Function ReadDouble(ByVal EXENAME As String, ByVal Address As Integer) As Double
  64.         Dim Value As Double
  65.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  66.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  67.             If Handle <> 0 Then
  68.                 ReadMemoryByte(Handle, Address, Value)
  69.             End If
  70.         End If
  71.         Return Value
  72.     End Function
  73.  
  74.     Public Function ReadPointerByte(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Byte
  75.         Dim Value As Byte
  76.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  77.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  78.             If Handle <> 0 Then
  79.                 For Each I As Integer In Offset
  80.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  81.                     Pointer += I
  82.                 Next
  83.                 ReadMemoryByte(Handle, Pointer, Value)
  84.             End If
  85.         End If
  86.         Return Value
  87.     End Function
  88.  
  89.     Public Function ReadPointerInteger(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Integer
  90.         Dim Value As Integer
  91.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  92.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  93.             If Handle <> 0 Then
  94.                 For Each I As Integer In Offset
  95.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  96.                     Pointer += I
  97.                 Next
  98.                 ReadMemoryInteger(Handle, Pointer, Value)
  99.             End If
  100.         End If
  101.         Return Value
  102.     End Function
  103.  
  104.     Public Function ReadPointerFloat(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Single
  105.         Dim Value As Single
  106.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  107.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  108.             If Handle <> 0 Then
  109.                 For Each I As Integer In Offset
  110.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  111.                     Pointer += I
  112.                 Next
  113.                 ReadMemoryFloat(Handle, Pointer, Value)
  114.             End If
  115.         End If
  116.         Return Value
  117.     End Function
  118.  
  119.     Public Function ReadPointerDouble(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Double
  120.         Dim Value As Double
  121.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  122.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  123.             If Handle <> 0 Then
  124.                 For Each I As Integer In Offset
  125.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  126.                     Pointer += I
  127.                 Next
  128.                 ReadMemoryDouble(Handle, Pointer, Value)
  129.             End If
  130.         End If
  131.         Return Value
  132.     End Function
  133.  
  134.     Public Sub WriteByte(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Byte)
  135.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  136.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  137.             If Handle <> 0 Then
  138.                 WriteMemoryByte(Handle, Address, Value)
  139.             End If
  140.         End If
  141.     End Sub
  142.  
  143.     Public Sub WriteInteger(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Integer)
  144.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  145.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  146.             If Handle <> 0 Then
  147.                 WriteMemoryInteger(Handle, Address, Value)
  148.             End If
  149.         End If
  150.     End Sub
  151.  
  152.     Public Sub WriteFloat(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Single)
  153.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  154.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  155.             If Handle <> 0 Then
  156.                 WriteMemoryFloat(Handle, Address, Value)
  157.             End If
  158.         End If
  159.     End Sub
  160.  
  161.  
  162.     <DllImport("kernel32.dll", SetLastError:=True)> _
  163.     Public Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByVal lpBuffer As Byte(), ByVal nSize As System.UInt32, <Out()> ByRef lpNumberOfBytesWritten As Int32) As Boolean
  164.     End Function
  165.     Public Function WriteString(ByVal proc As String, ByVal target As Integer, ByVal data As String) As Boolean
  166.  
  167.         Return WriteProcessMemory(Process.GetProcessesByName(proc)(0).Handle, New IntPtr(target), StrToByteArray(data), data.Length, 0)
  168.     End Function
  169.     Public Function StrToByteArray(ByVal str As String)
  170.         Dim encoding As New System.Text.UTF8Encoding()
  171.         Return encoding.GetBytes(str)
  172.  
  173.     End Function
  174.     '  Public Sub WriteMemoryString(ByVal hProcess As String, ByVal dwAddress As Integer, ByVal str As IntPtr, ByVal strlen)
  175.     '  Dim zero As IntPtr = IntPtr.Zero
  176.     '' If Not WriteProcessMemory(hProcess, dwAddress, str, strlen, zero) Then
  177.  
  178.     ''End If
  179.  
  180.     '   End Sub
  181.  
  182.  
  183.  
  184.  
  185.     Public Sub WriteDouble(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Double)
  186.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  187.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  188.             If Handle <> 0 Then
  189.                 WriteMemoryDouble(Handle, Address, Value)
  190.             End If
  191.         End If
  192.     End Sub
  193.  
  194.     Public Sub WritePointerByte(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Byte, ByVal ParamArray Offset As Integer())
  195.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  196.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  197.             If Handle <> 0 Then
  198.                 For Each I As Integer In Offset
  199.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  200.                     Pointer += I
  201.                 Next
  202.                 WriteMemoryByte(Handle, Pointer, Value)
  203.             End If
  204.         End If
  205.     End Sub
  206.     Public Sub WritePointerString(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As String, ByVal ParamArray Offset As Integer())
  207.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  208.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  209.             If Handle <> 0 Then
  210.                 For Each I As Integer In Offset
  211.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  212.                     Pointer += I
  213.                 Next
  214.                 WriteString(EXENAME, Pointer, Value)
  215.             End If
  216.         End If
  217.     End Sub
  218.  
  219.  
  220.     Public Sub WritePointerInteger(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Integer, ByVal ParamArray Offset As Integer())
  221.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  222.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  223.             If Handle <> 0 Then
  224.                 For Each I As Integer In Offset
  225.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  226.                     Pointer += I
  227.                 Next
  228.                 WriteMemoryInteger(Handle, Pointer, Value)
  229.             End If
  230.         End If
  231.     End Sub
  232.  
  233.     Public Sub WritePointerFloat(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Single, ByVal ParamArray Offset As Integer())
  234.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  235.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  236.             If Handle <> 0 Then
  237.                 For Each I As Integer In Offset
  238.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  239.                     Pointer += I
  240.                 Next
  241.                 WriteMemoryFloat(Handle, Pointer, Value)
  242.             End If
  243.         End If
  244.     End Sub
  245.  
  246.     Public Sub WritePointerDouble(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Double, ByVal ParamArray Offset As Integer())
  247.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  248.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  249.             If Handle <> 0 Then
  250.                 For Each I As Integer In Offset
  251.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  252.                     Pointer += I
  253.                 Next
  254.                 WriteMemoryDouble(Handle, Pointer, Value)
  255.             End If
  256.         End If
  257.     End Sub
  258.  
  259. End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement