public void WriteAMem(IntPtr MemoryAddress, byte[] bytesToWrite, out int bytesWritten) { IntPtr ptrBytesWritten; ProcessMemoryReaderApi.WriteProcessMemory(m_hProcess, MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten); bytesWritten = ptrBytesWritten.ToInt32(); }
public void CloseHandle() { int iRetValue; iRetValue = ProcessMemoryReaderApi.CloseHandle(m_hProcess); if (iRetValue == 0) { throw new Exception("CloseHandle failed"); } }
public byte[] ReadAMem(IntPtr MemoryAddress, uint bytesToRead, out int bytesReaded) { byte[] buffer = new byte[bytesToRead]; IntPtr ptrBytesReaded; ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, bytesToRead, out ptrBytesReaded); bytesReaded = ptrBytesReaded.ToInt32(); return(buffer); }
public int ReadMem(int MemoryAddress, uint bytesToRead, out byte[] buffer) { IntPtr procHandle = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ | ProcessMemoryReaderApi.PROCESS_VM_WRITE | ProcessMemoryReaderApi.PROCESS_VM_OPERATION, 1, (uint)m_ReadProcess.Id); if (procHandle == IntPtr.Zero) { buffer = new byte[0]; return(0); } buffer = new byte[bytesToRead]; IntPtr ptrBytesReaded; ProcessMemoryReaderApi.ReadProcessMemory(procHandle, (IntPtr)MemoryAddress, buffer, bytesToRead, out ptrBytesReaded); ProcessMemoryReaderApi.CloseHandle(procHandle); return(ptrBytesReaded.ToInt32()); }
public int WriteMem(int MemoryAddress, byte[] buf) { IntPtr procHandle = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ | ProcessMemoryReaderApi.PROCESS_VM_WRITE | ProcessMemoryReaderApi.PROCESS_VM_OPERATION, 1, (uint)m_ReadProcess.Id); if (procHandle == IntPtr.Zero) { return(0); } uint oldProtect; ProcessMemoryReaderApi.VirtualProtectEx(procHandle, (IntPtr)MemoryAddress, (uint)buf.Length, ProcessMemoryReaderApi.PAGE_READWRITE, out oldProtect); IntPtr ptrBytesWritten; ProcessMemoryReaderApi.WriteProcessMemory(procHandle, (IntPtr)MemoryAddress, buf, (uint)buf.Length, out ptrBytesWritten); ProcessMemoryReaderApi.CloseHandle(procHandle); return(ptrBytesWritten.ToInt32()); }
//We use this to public int ReadMultiLevelPointer(int MemoryAddress, uint bytesToRead, Int32[] offsetList) { IntPtr procHandle = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ | ProcessMemoryReaderApi.PROCESS_VM_WRITE | ProcessMemoryReaderApi.PROCESS_VM_OPERATION, 1, (uint)m_ReadProcess.Id); IntPtr pointer = (IntPtr)0x0; //IF THE PROCESS isnt available we return nothing if (procHandle == IntPtr.Zero) { return(0); } byte[] btBuffer = new byte[bytesToRead]; IntPtr lpOutStorage = IntPtr.Zero; int pointerAddy = MemoryAddress; //int pointerTemp = 0; for (int i = 0; i < (offsetList.Length); i++) { if (i == 0) { ProcessMemoryReaderApi.ReadProcessMemory( procHandle, (IntPtr)(pointerAddy), btBuffer, (uint)btBuffer.Length, out lpOutStorage); } pointerAddy = (BitConverter.ToInt32(btBuffer, 0) + offsetList[i]); //string pointerAddyHEX = pointerAddy.ToString("X"); ProcessMemoryReaderApi.ReadProcessMemory( procHandle, (IntPtr)(pointerAddy), btBuffer, (uint)btBuffer.Length, out lpOutStorage); } return(pointerAddy); }
public void OpenProcess() { m_hProcess = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ | ProcessMemoryReaderApi.PROCESS_VM_WRITE | ProcessMemoryReaderApi.PROCESS_VM_OPERATION, 1, (uint)m_ReadProcess.Id); }