public IntPtr Scan(IntPtr baseAddress, int size, string signature) { if (!MemoryService.GetIsProcessAlive()) { return(IntPtr.Zero); } byte?[]? needle = this.SigToNeedle(signature); // Fast byte[] bigBuffer = new byte[size]; MemoryService.Read(baseAddress, bigBuffer, size); unsafe { for (long offset = 0; offset < size - needle.Length; offset++) { if (this.IsMatch(needle, bigBuffer, offset)) { UIntPtr ptr = new UIntPtr(Convert.ToUInt64(baseAddress.ToInt64() + offset)); return((IntPtr)ptr.ToPointer()); } } } throw new KeyNotFoundException($"Can't find a signature of {signature}"); }