Example #1
0
 public void OpenProcess()
 {
     //			m_hProcess = ProcessMemoryReaderApi.OpenProcess(ProcessMemoryReaderApi.PROCESS_VM_READ, 1, (uint)m_ReadProcess.Id);
     ProcessMemoryReaderApi.ProcessAccessType access;
     access = ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_READ
              | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_WRITE
              | ProcessMemoryReaderApi.ProcessAccessType.PROCESS_VM_OPERATION;
     m_hProcess = ProcessMemoryReaderApi.OpenProcess((uint)access, 1, (uint)mReadProcess.Id);
 }
Example #2
0
        public void CloseHandle()
        {
            int iRetValue;

            iRetValue = ProcessMemoryReaderApi.CloseHandle(m_hProcess);
            if (iRetValue == 0)
            {
                throw new Exception("CloseHandle failed");
            }
        }
Example #3
0
        public void WriteProcessMemory(IntPtr MemoryAddress, byte[] bytesToWrite, out int bytesWritten)
        {
            uint old;

            ProcessMemoryReaderApi.VirtualProtectEx(m_hProcess, MemoryAddress, (uint)bytesToWrite.Length, (uint)ProcessMemoryReaderApi.MemoryProtection.PAGE_READWRITE, out old);

            IntPtr ptrBytesWritten;

            ProcessMemoryReaderApi.WriteProcessMemory(m_hProcess, MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten);

            bytesWritten = ptrBytesWritten.ToInt32();
        }
Example #4
0
        public int GetExitCode()
        {
            if (m_hProcess == IntPtr.Zero)
            {
                return(0);
            }

            uint exitCode;
            int  status = ProcessMemoryReaderApi.GetExitCodeProcess(m_hProcess, out exitCode);

            return((int)exitCode);
        }
Example #5
0
        public void ResumeProcess()
        {
            foreach (ProcessThread thread in mReadProcess.Threads)
            {
                IntPtr openThread = ProcessMemoryReaderApi.OpenThread(ProcessMemoryReaderApi.ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id);
                if (openThread == IntPtr.Zero)
                {
                    continue;
                }

                ProcessMemoryReaderApi.ResumeThread(openThread);
            }
        }
Example #6
0
        public byte[] ReadProcessMemory(IntPtr MemoryAddress, uint bytesToRead, out int bytesRead)
        {
            uint old;

            ProcessMemoryReaderApi.VirtualProtectEx(m_hProcess, MemoryAddress, bytesToRead, (uint)ProcessMemoryReaderApi.MemoryProtection.PAGE_READWRITE, out old);

            byte[] buffer = new byte[bytesToRead];

            IntPtr ptrBytesRead;

            ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, bytesToRead, out ptrBytesRead);

            bytesRead = ptrBytesRead.ToInt32();

            return(buffer);
        }
Example #7
0
 public void FreeMemory(IntPtr address)
 {
     ProcessMemoryReaderApi.VirtualFreeEx(m_hProcess, address, 0, (int)ProcessMemoryReaderApi.FreeType.MEM_RELEASE);
 }
Example #8
0
 public IntPtr AllocateMemory(uint size)
 {
     return(ProcessMemoryReaderApi.VirtualAllocEx(m_hProcess, IntPtr.Zero, size, (uint)ProcessMemoryReaderApi.AllocationType.MEM_COMMIT, (uint)ProcessMemoryReaderApi.MemoryProtection.PAGE_EXECUTE_READWRITE));
 }