public void Open() { MemoryAPI.ProcessAccessType access = MemoryAPI.ProcessAccessType.PROCESS_VM_READ | MemoryAPI.ProcessAccessType.PROCESS_VM_WRITE | MemoryAPI.ProcessAccessType.PROCESS_VM_OPERATION; m_hProcess = MemoryAPI.OpenProcess((uint)access, 1, (uint)m_ReadProcess.Id); }
public void Write(IntPtr MemoryAddress, byte[] bytesToWrite, out int bytesWritten) { IntPtr ptrBytesWritten; MemoryAPI.WriteProcessMemory(m_hProcess, MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten); bytesWritten = ptrBytesWritten.ToInt32(); }
public byte[] Read(IntPtr MemoryAddress, uint bytesToRead, out int bytesRead) { byte[] buffer = new byte[bytesToRead]; IntPtr ptrBytesRead; MemoryAPI.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, bytesToRead, out ptrBytesRead); bytesRead = ptrBytesRead.ToInt32(); return(buffer); }
public void CloseHandle() { int iRetValue; iRetValue = MemoryAPI.CloseHandle(m_hProcess); if (iRetValue == 0) { throw new Exception("CloseHandle Failed"); } }
public byte[] PointerRead(IntPtr MemoryAddress, uint bytesToRead, int[] Offset, out int bytesRead) { int iPointerCount = Offset.Length - 1; IntPtr ptrBytesRead; bytesRead = 0; byte[] buffer = new byte[4]; //DWORD to hold an Address int tempAddress = 0; if (iPointerCount == 0) { MemoryAPI.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesRead); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[0]; //Final Address buffer = new byte[bytesToRead]; MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, bytesToRead, out ptrBytesRead); bytesRead = ptrBytesRead.ToInt32(); return(buffer); } for (int i = 0; i <= iPointerCount; i++) { if (i == iPointerCount) { MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesRead); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[i]; //Final Address buffer = new byte[bytesToRead]; MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, bytesToRead, out ptrBytesRead); bytesRead = ptrBytesRead.ToInt32(); return(buffer); } else if (i == 0) { MemoryAPI.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesRead); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[1]; } else { MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesRead); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[i]; } } return(buffer); }
public string PointerWrite(IntPtr MemoryAddress, byte[] bytesToWrite, int[] Offset, out int bytesWritten) { int iPointerCount = Offset.Length - 1; IntPtr ptrBytesWritten; bytesWritten = 0; byte[] buffer = new byte[4]; //DWORD to hold an Address int tempAddress = 0; if (iPointerCount == 0) { MemoryAPI.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesWritten); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[0]; //Final Address MemoryAPI.WriteProcessMemory(m_hProcess, (IntPtr)tempAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten); bytesWritten = ptrBytesWritten.ToInt32(); return(Addr.ToHex(tempAddress)); } for (int i = 0; i <= iPointerCount; i++) { if (i == iPointerCount) { MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesWritten); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[i]; //Final Address MemoryAPI.WriteProcessMemory(m_hProcess, (IntPtr)tempAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten); bytesWritten = ptrBytesWritten.ToInt32(); return(Addr.ToHex(tempAddress)); } else if (i == 0) { MemoryAPI.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, 4, out ptrBytesWritten); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[i]; } else { MemoryAPI.ReadProcessMemory(m_hProcess, (IntPtr)tempAddress, buffer, 4, out ptrBytesWritten); tempAddress = Addr.ToDec(Addr.Make(buffer)) + Offset[i]; } } return(Addr.ToHex(tempAddress)); }