public void Write(IntPtr address, byte[] buffer, out int bytesWritten) { IntPtr lpBytesWritten; MemoryAPI.WriteProcessMemory(m_hProcess, address, buffer, (uint)buffer.Length, out lpBytesWritten); bytesWritten = lpBytesWritten.ToInt32(); }
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); }