コード例 #1
0
        public byte[] Read(IntPtr address, uint count, out int bytesRead)
        {
            byte[] buffer = new byte[count];
            IntPtr lpBytesRead;

            MemoryAPI.ReadProcessMemory(m_hProcess, address, buffer, count, out lpBytesRead);
            bytesRead = lpBytesRead.ToInt32();
            return(buffer);
        }
コード例 #2
0
        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);
        }