public void WriteByte(IntPtr memoryAddress, byte byteToWrite) { byte[] buffer = new byte[1]; buffer[0] = byteToWrite; pBytesWritten = IntPtr.Zero; Win32MemoryApi.WriteProcessMemory(handle, memoryAddress, buffer, 1, out pBytesWritten); }
public void WriteToPtr_x64(long[] PointerChain, byte[] Data) { IntPtr pBytesWritten; IntPtr pBytesRead; byte[] buffer = new byte[8]; bool isbase = true; long Pointer = 0; foreach (long Chain in PointerChain) { if (isbase) { Win32MemoryApi.ReadProcessMemory(handle, (IntPtr)((long)process.Modules[0].BaseAddress + Chain), buffer, 8, out pBytesRead); Pointer = BitConverter.ToInt64(buffer, 0); isbase = false; } else { Win32MemoryApi.ReadProcessMemory(handle, (IntPtr)(Pointer + Chain), buffer, 8, out pBytesRead); Pointer = BitConverter.ToInt64(buffer, 0); } } Win32MemoryApi.WriteProcessMemory(handle, (IntPtr)Pointer, Data, (uint)Data.Length, out pBytesWritten); }
public double ReadDouble(IntPtr memoryAddress) { byte[] buffer = new byte[8]; Win32MemoryApi.ReadProcessMemory(handle, memoryAddress, buffer, 8, out pBytesRead); double i = BitConverter.ToDouble(buffer, 0); return(i); }
public float ReadSingle(IntPtr memoryAddress) { byte[] buffer = new byte[4]; Win32MemoryApi.ReadProcessMemory(handle, memoryAddress, buffer, 4, out pBytesRead); float i = BitConverter.ToSingle(buffer, 0); return(i); }
public long ReadInt64(IntPtr memoryAddress) { byte[] buffer = new byte[8]; Win32MemoryApi.ReadProcessMemory(handle, memoryAddress, buffer, 8, out pBytesRead); long i = BitConverter.ToInt64(buffer, 0); return(i); }
public int ReadInt32(IntPtr memoryAddress) { byte[] buffer = new byte[4]; Win32MemoryApi.ReadProcessMemory(handle, memoryAddress, buffer, 4, out pBytesRead); int i = BitConverter.ToInt32(buffer, 0); return(i); }
public void CloseHandle() { int returnValue = Win32MemoryApi.CloseHandle(handle); if (returnValue != 0) { throw new Exception("Closing handle failed."); } }
public void OpenProcess() { Win32MemoryApi.ProcessAccessType access = Win32MemoryApi.ProcessAccessType.PROCESS_QUERY_INFORMATION | Win32MemoryApi.ProcessAccessType.PROCESS_VM_READ | Win32MemoryApi.ProcessAccessType.PROCESS_VM_WRITE | Win32MemoryApi.ProcessAccessType.PROCESS_VM_OPERATION; handle = Win32MemoryApi.OpenProcess((uint)access, 1, (uint)process.Id); pBaseAddress = process.MainModule.BaseAddress; pEndAddress = IntPtr.Add(pBaseAddress, process.MainModule.ModuleMemorySize); ModuleSize = (long)pEndAddress - (long)pBaseAddress; ModuleCopy = new byte[ModuleSize]; }
public long ReadPtr_x64(long[] PointerChain) { bool isbase = true; IntPtr pBytesRead; byte[] buffer = new byte[8]; long Pointer = 0; foreach (long Chain in PointerChain) { if (isbase) { Win32MemoryApi.ReadProcessMemory(handle, (IntPtr)((long)process.Modules[0].BaseAddress + Chain), buffer, 8, out pBytesRead); Pointer = BitConverter.ToInt64(buffer, 0); isbase = false; } else { Win32MemoryApi.ReadProcessMemory(handle, (IntPtr)(Pointer + Chain), buffer, 8, out pBytesRead); Pointer = BitConverter.ToInt64(buffer, 0); } } return(Pointer); }
public void WriteDouble(IntPtr memoryAddress, double i) { pBytesWritten = IntPtr.Zero; byte[] buffer = BitConverter.GetBytes(i); Win32MemoryApi.WriteProcessMemory(handle, memoryAddress, buffer, 8, out pBytesWritten); }
public void WriteByteArray(IntPtr memoryAddress, byte[] bytesToWrite) { pBytesWritten = IntPtr.Zero; Win32MemoryApi.WriteProcessMemory(handle, memoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out pBytesWritten); }
public byte[] ReadByteArray(IntPtr memoryAddress, uint length) { byte[] buffer = new byte[length]; Win32MemoryApi.ReadProcessMemory(handle, memoryAddress, buffer, length, out pBytesRead); return(buffer); }
public byte ReadByte(IntPtr memoryAddress) { byte[] buffer = new byte[1]; Win32MemoryApi.ReadProcessMemory(handle, memoryAddress, buffer, 1, out pBytesRead); return(buffer[0]); }