コード例 #1
0
        public ProcessMemoryHandle(Process PData)
        {
            if (PData.HasExited)
            {
                throw new Exception("Initializing ProcessMemoryHandle with an exited process.");
            }

            BaseProcess        = PData;
            Win32ProcessHandle = IWindowsProcessMemory.OpenProcess(permissions, false, PData.Id);
        }
コード例 #2
0
        public int WriteMemory(byte[] data, int offset, int size, out bool error)
        {
            if (!ProcessRunning())
            {
                error = true;
                return(0);
            }


            int bytes_written = 0;

            error = IWindowsProcessMemory.WriteProcessMemory((int)Win32ProcessHandle, offset, data, size, ref bytes_written);


            return(bytes_written);
        }
コード例 #3
0
        public byte[] ReadMemory(int offset, int size, out int NumRead, out bool error)
        {
            if (!ProcessRunning())
            {
                NumRead = 0;
                error   = true;
                return(new byte[0]);
            }


            byte[] retmem     = new byte[size];
            int    bytes_read = 0;

            error   = IWindowsProcessMemory.ReadProcessMemory((int)Win32ProcessHandle, offset, retmem, size, ref bytes_read); /// aaaand somehow without REF this gets stuffed into retmem?
            NumRead = bytes_read;

            return(retmem);
        }