Jorndel's Ghosts mem class in VB.Net.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