Code:
Imports System.Runtime.InteropServices
Imports System.Text
Public Class UUv3MemoryClass
#Region "MemoryClass"
Private pHandle As IntPtr
Private rProcess As Process = Nothing
Private hProcess As IntPtr = IntPtr.Zero
<DllImport("kernel32.dll")> _
Public Shared Function _
OpenProcess(ByVal DesiredAccess As UInt32, ByVal InheritHandle As Int32, ByVal ProcessID As UInt32) As IntPtr
End Function
<DllImport("kernel32.dll")> _
Public Shared Function _
ReadProcessMemory(ByVal hProcess As IntPtr, ByVal BaseAddress As IntPtr, <[In](), Out()> ByVal Buffer As Byte(), _
ByVal Size As UInt32, ByRef NumberOfBytesRead As IntPtr) As Int32
End Function
<DllImport("kernel32.dll")> _
Public Shared Function _
WriteProcessMemory(ByVal hProcess As IntPtr, ByVal BaseAddress As IntPtr, <[In](), Out()> ByVal Buffer As Byte(), _
ByVal Size As UInt32, ByRef NumberOfBytesWritten As IntPtr) As Int32
End Function
<Flags()> _
Public Enum ProcessAccessType
pOperation = (&H8)
pRead = (&H10)
pWrite = (&H20)
End Enum
Public Function pH(ByVal pName As String) As Boolean
Try
Dim pList As Process() = Process.GetProcessesByName(pName)
If pList.Length = 0 Then
Return False
Else
pHandle = pList(0).Handle
Return True
End If
Catch ex As Exception
Return False
End Try
End Function
Public Function h(ByVal App As String) As Boolean
Dim pArray As Process() = Process.GetProcessesByName(App)
If pArray.Length = 0 Then
Return True
End If
ReadProcess = pArray(0)
Open()
Return False
End Function
Public Sub SetInteger(ByVal Address As Integer, ByVal Value As Integer)
Dim BytesWritten As Integer
Write(Address, BitConverter.GetBytes(Value), BytesWritten)
End Sub
Public Sub SetByte(ByVal Address As Integer, ByVal Value As Byte())
Dim BytesWritten As Integer
Write(Address, Value, BytesWritten)
End Sub
Public Sub WriteString(ByVal Address As Integer, ByVal Text As String)
Dim Buffer As Byte() = New ASCIIEncoding().GetBytes(Text)
Dim Zero As IntPtr = IntPtr.Zero
WriteProcessMemory(pHandle, New IntPtr(Address), Buffer, UInt32.Parse(Buffer.Length), Zero)
End Sub
Private Function Read(ByVal Address As Integer, ByVal Length As Integer) As Byte()
Dim Buffer As Byte() = New Byte(Length - 1) {}
Dim Zero As IntPtr = IntPtr.Zero
ReadProcessMemory(pHandle, New IntPtr(Address), Buffer, UInt32.Parse(Buffer.Length), Zero)
Return Buffer
End Function
Public Function ReadInteger(ByVal Address As Integer, Optional ByVal Length As Integer = 4) As Integer
Return _
BitConverter.ToInt32(Read(Address, Length), 0)
End Function
Private Property ReadProcess() As Process
Get
Return rProcess
End Get
Set(ByVal Value As Process)
rProcess = Value
End Set
End Property
Private Sub Write(ByVal MemoryAddress As IntPtr, ByVal BytesToWrite As Byte(), ByRef BytesWritten As Integer)
Dim _BytesWritten As IntPtr
WriteProcessMemory(hProcess, MemoryAddress, BytesToWrite, CUInt(BytesToWrite.Length), _BytesWritten)
BytesWritten = _BytesWritten.ToInt32()
End Sub
Public Sub WriteFloat(ByVal Address As Integer, ByVal Value As Single)
Dim Buffer As Byte() = BitConverter.GetBytes(Value)
Dim Zero As IntPtr = IntPtr.Zero
WriteProcessMemory(pHandle, New IntPtr(Address), Buffer, UInt32.Parse(Buffer.Length), Zero)
End Sub
Private Sub Open()
Dim Access As ProcessAccessType
Access = ProcessAccessType.pRead Or _
ProcessAccessType.pWrite Or _
ProcessAccessType.pOperation
hProcess = OpenProcess(CUInt(Access), 1, CUInt(rProces*****))
End Sub
#End Region
End Class
Maybe it helps you.