Code:
Class CC
Private Shared ProcName As String = ""
Private Shared pHandle As IntPtr = IntPtr.Zero
<System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError := True)> _
Private Shared Function WriteProcessMemory(hProcess As IntPtr, lpBaseAddress As IntPtr, lpBuffer As Byte(), nSize As Integer, ByRef lpNumberOfBytesWritten As IntPtr) As Boolean
End Function
<System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError := True)> _
Private Shared Function ReadProcessMemory(hProcess As IntPtr, lpBaseAddress As IntPtr, <System.Runtime.InteropServices.Out> lpBuffer As Byte(), dwSize As Integer, ByRef lpNumberOfBytesRead As IntPtr) As Boolean
End Function
Public Shared Property ProcessName() As String
Get
Return ProcName
End Get
Set
If System.Diagnostics.Process.GetProcessesByName(value).Length <> 0 Then
pHandle = System.Diagnostics.Process.GetProcessesByName(value)(0).Handle
ProcName = value
Else
System.Windows.Forms.MessageBox.Show(value & vbLf & vbLf & " Not Found!", "Error:" & value, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.[Error])
ProcName = ""
End If
End Set
End Property
Public Class Write
Public Shared Sub _Int16(Address As Int64, Value As Int16)
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
WriteProcessMemory(pHandle, New IntPtr(Address), BitConverter.GetBytes(Value), sizeof(Int16), retByt)
End If
End Sub
Public Shared Sub _Int32(Address As Int64, Value As Int32)
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
WriteProcessMemory(pHandle, New IntPtr(Address), BitConverter.GetBytes(Value), sizeof(Int32), retByt)
End If
End Sub
Public Shared Sub _Int64(Address As Int64, Value As Int64)
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
WriteProcessMemory(pHandle, New IntPtr(Address), BitConverter.GetBytes(Value), sizeof(Int64), retByt)
End If
End Sub
Public Shared Sub _Float(Address As Int64, Float As [Single])
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
WriteProcessMemory(pHandle, New IntPtr(Address), BitConverter.GetBytes(Float), sizeof([Single]), retByt)
End If
End Sub
Public Shared Sub _String(Address As Int64, Value As [String])
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
WriteProcessMemory(pHandle, New IntPtr(Address), ASCIIEncoding.ASCII.GetBytes(Value), sizeof(Int64), retByt)
End If
End Sub
Public Shared Sub _Bytes(Address As Int64, Value As [Byte]())
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
WriteProcessMemory(pHandle, New IntPtr(Address), Value, Value.Length, retByt)
End If
End Sub
End Class
Public Class Read
Public Shared Function _Int16(Address As Int64) As Int16
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
Dim buffer As [Byte]() = New [Byte](sizeof(Int16) - 1) {}
ReadProcessMemory(pHandle, New IntPtr(Address), buffer, sizeof(Int16), retByt)
Return BitConverter.ToInt16(buffer, 0)
Else
Return 0
End If
End Function
Public Shared Function _Int32(Address As Int64) As Int32
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
Dim buffer As [Byte]() = New [Byte](sizeof(Int32) - 1) {}
ReadProcessMemory(pHandle, New IntPtr(Address), buffer, sizeof(Int32), retByt)
Return BitConverter.ToInt32(buffer, 0)
Else
Return 0
End If
End Function
Public Shared Function _Int64(Address As Int64) As Int64
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
Dim buffer As [Byte]() = New [Byte](sizeof(Int64) - 1) {}
ReadProcessMemory(pHandle, New IntPtr(Address), buffer, sizeof(Int64), retByt)
Return BitConverter.ToInt64(buffer, 0)
Else
Return 0
End If
End Function
Public Shared Function _Float(Address As Int64) As [Single]
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
Dim buffer As [Byte]() = New [Byte](sizeof([Single]) - 1) {}
ReadProcessMemory(pHandle, New IntPtr(Address), buffer, sizeof([Single]), retByt)
Return BitConverter.ToSingle(buffer, 0)
Else
Return 0
End If
End Function
Public Shared Function _String(Address As Int64, _Length As Int32) As [String]
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
Dim buffer As [Byte]() = New [Byte](_Length - 1) {}
ReadProcessMemory(pHandle, New IntPtr(Address), buffer, _Length, retByt)
Return ASCIIEncoding.ASCII.GetString(buffer)
Else
Return ""
End If
End Function
Public Shared Function _Bytes(Address As Int64, _Size As Int32) As [Byte]()
If System.Diagnostics.Process.GetProcessesByName(ProcName).Length <> 0 Then
Dim retByt As IntPtr
Dim buffer As [Byte]() = New [Byte](_Size - 1) {}
ReadProcessMemory(pHandle, New IntPtr(Address), buffer, _Size, retByt)
Return buffer
Else
Return New Byte(-1) {}
End If
End Function
End Class
End Class
Jorndel's Ghosts mem class in VB.Net.