public void SetExecuteReadAccess(ulong Address, ulong Size = 0, bool UseBaseAddress = false) { ++this._framesRendered; if ((DateTime.Now - this._lastTime).TotalSeconds >= 1.0) { this._framesRendered = 0; this._lastTime = DateTime.Now; } if (!this.Driver.get_IO().get_IsConnected()) { throw new Exception("Driver is disconnected."); } if (Size <= 0UL) { throw new ArgumentException("Size is inferior or equal to zero at Read(ProcessId, Address, Size).", nameof(Size)); } if (Size > 2147483591UL) { throw new ArgumentException("Size is superior to the limit at Read(ProcessId, Address, Size).", nameof(Size)); } if (Address == 0UL || Address >= 140737488289791UL) { return; } bool flag = false; KernelReadRequest kernelReadRequest = new KernelReadRequest(); uint num = (uint)Marshal.SizeOf <KernelReadRequest>(); kernelReadRequest.ProcessId = this.LastProcessId; kernelReadRequest.Size = (UIntPtr)Size; kernelReadRequest.Response = (UIntPtr)32UL; kernelReadRequest.Address = (UIntPtr)Address; kernelReadRequest.UseBaseAddress = UseBaseAddress; flag = this.Driver.get_IO().TryIoControl <KernelReadRequest, uint>(2235412U, (M0)kernelReadRequest, (M1)(int)num); }
public byte[] Read(ulong Address, ulong Size, bool UseBaseAddress = false) { ++this._framesRendered; if ((DateTime.Now - this._lastTime).TotalSeconds >= 1.0) { this._framesRendered = 0; this._lastTime = DateTime.Now; } if (!this.Driver.get_IO().get_IsConnected()) { throw new Exception("Driver is disconnected."); } if (Size <= 0UL) { throw new ArgumentException("Size is inferior or equal to zero at Read(ProcessId, Address, Size).", nameof(Size)); } if (Size > 2147483591UL) { throw new ArgumentException("Size is superior to the limit at Read(ProcessId, Address, Size).", nameof(Size)); } if (Address == 0UL || Address >= 140737488289791UL) { return((byte[])null); } KernelReadRequest kernelReadRequest = new KernelReadRequest(); uint num1 = (uint)Marshal.SizeOf <KernelReadRequest>(); byte[] numArray = new byte[Size]; GCHandle gcHandle = GCHandle.Alloc((object)numArray, GCHandleType.Pinned); if (!gcHandle.IsAllocated) { throw new InsufficientMemoryException("Couldn't allocate memory for the buffer, at Read(ProcessId, Address, Size)."); } IntPtr num2 = gcHandle.AddrOfPinnedObject(); kernelReadRequest.ProcessId = this.LastProcessId; kernelReadRequest.Size = (UIntPtr)Size; kernelReadRequest.Response = (UIntPtr)((ulong)num2.ToInt64()); kernelReadRequest.Address = (UIntPtr)Address; kernelReadRequest.UseBaseAddress = UseBaseAddress; bool flag = this.Driver.get_IO().TryIoControl <KernelReadRequest, uint>(2235396U, (M0)kernelReadRequest, (M1)(int)num1); if (flag) { numArray = (byte[])gcHandle.Target; } gcHandle.Free(); if (!flag) { numArray = (byte[])null; } return(numArray); }
public long GetUnityPlayerDllBase() { if (!this.Driver.get_IO().get_IsConnected()) { throw new Exception("Driver is disconnected."); } bool flag = false; KernelReadRequest kernelReadRequest = new KernelReadRequest(); uint num1 = (uint)Marshal.SizeOf <KernelReadRequest>(); GCHandle gcHandle = GCHandle.Alloc((object)new byte[8], GCHandleType.Pinned); IntPtr num2 = gcHandle.AddrOfPinnedObject(); kernelReadRequest.ProcessId = this.LastProcessId; kernelReadRequest.Size = (UIntPtr)5UL; kernelReadRequest.Response = (UIntPtr)((ulong)num2.ToInt64()); flag = this.Driver.get_IO().TryIoControl <KernelReadRequest, uint>(2235424U, (M0)kernelReadRequest, (M1)(int)num1); return(BitConverter.ToInt64((byte[])gcHandle.Target, 0)); }
public T Read <T>(ulong Address, bool UseBaseAddress = false) { if (!this.Driver.get_IO().get_IsConnected()) { throw new Exception("Driver is disconnected."); } if (Address == 0UL || Address >= 140737488289791UL) { return(default(T)); } int cb = Marshal.SizeOf <T>(); if (Address + (ulong)cb >= 140737488289791UL) { return(default(T)); } KernelReadRequest kernelReadRequest = new KernelReadRequest(); uint num1 = (uint)Marshal.SizeOf <KernelReadRequest>(); T obj = default(T); IntPtr num2 = Marshal.AllocHGlobal(cb); if (num2 == IntPtr.Zero) { throw new InsufficientMemoryException("Couldn't allocate memory for the buffer, at Read<T>(Address, UseBaseAddress)."); } kernelReadRequest.ProcessId = this.LastProcessId; kernelReadRequest.Size = (UIntPtr)((ulong)cb); kernelReadRequest.Response = (UIntPtr)((ulong)num2.ToInt64()); kernelReadRequest.Address = (UIntPtr)Address; kernelReadRequest.UseBaseAddress = UseBaseAddress; bool flag = this.Driver.get_IO().TryIoControl <KernelReadRequest, uint>(2235396U, (M0)kernelReadRequest, (M1)(int)num1); if (flag) { obj = Marshal.PtrToStructure <T>(num2); } Marshal.FreeHGlobal(num2); if (!flag) { obj = default(T); } return(obj); }