public byte[] Read(IntPtr address, uint count, out int bytesRead) { byte[] buffer = new byte[count]; IntPtr lpBytesRead; MemoryAPI.ReadProcessMemory(m_hProcess, address, buffer, count, out lpBytesRead); bytesRead = lpBytesRead.ToInt32(); return(buffer); }
public int PointerWrite(IntPtr address, byte[] writeBuffer, int[] offset, out int bytesWritten) { int pointerCount = offset.Length - 1; IntPtr lpBytesWritten; bytesWritten = 0; byte[] buffer = new byte[4]; int tempAddress = 0; if (pointerCount == 0) { MemoryAPI.ReadProcessMemory(m_hProcess, address, buffer, 4, out lpBytesWritten); tempAddress = Address.ToDecimal(Address.Make(buffer)) + offset[0]; MemoryAPI.WriteProcessMemory(m_hProcess, (IntPtr)tempAddress, writeBuffer, (uint)writeBuffer.Length, out lpBytesWritten); bytesWritten = lpBytesWritten.ToInt32(); return(tempAddress); } for (int i = 0; i <= pointerCount; i++) { if (i == pointerCount) { MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out lpBytesWritten); tempAddress = Address.ToDecimal(Address.Make(buffer)) + offset[i]; MemoryAPI.WriteProcessMemory(m_hProcess, (IntPtr)tempAddress, writeBuffer, (uint)writeBuffer.Length, out lpBytesWritten); bytesWritten = lpBytesWritten.ToInt32(); return(tempAddress); } else if (i == 0) { MemoryAPI.ReadProcessMemory(m_hProcess, address, buffer, 4, out lpBytesWritten); tempAddress = Address.ToDecimal(Address.Make(buffer)) + offset[i]; } else { MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)address, buffer, 4, out lpBytesWritten); tempAddress = Address.ToDecimal(Address.Make(buffer)) + offset[i]; } } return(tempAddress); }