示例#1
0
        public static int GetIndexOf(IAMemoryPattern pattern, byte[] Data, AProcessSharpModule module)
        {
            var patternData       = Data;
            var patternDataLength = patternData.Length;

            for (var offset = 0; offset < patternDataLength; offset++)
            {
                if (
                    pattern.GetMask()
                    .Where((m, b) => m == 'x' && pattern.GetBytes()[b] != patternData[b + offset])
                    .Any())
                {
                    continue;
                }

                return(offset);
            }
            return(-1);
        }
示例#2
0
        /// <summary>
        ///     Frees the loaded dynamic-link library (DLL) module and, if necessary, decrements its reference count.
        /// </summary>
        /// <param name="module">The module to eject.</param>
        public void Eject(AProcessSharpModule module)
        {
            // If the module is valid
            if (!module.IsValid)
            {
                return;
            }

            // Find if the module is an injected one
            var injected = InternalInjectedModules.FirstOrDefault(m => m.Equals(module));

            if (injected != null)
            {
                InternalInjectedModules.Remove(injected);
            }

            // Eject the module
            ARemoteModule.InternalEject(ProcessPlus, module);
        }
示例#3
0
 public APatternScanner(AProcessSharpModule module, int offsetFromBaseAddress)
 {
     _module = module;
     _offsetFromBaseAddress = offsetFromBaseAddress;
     Data = module.Read(_offsetFromBaseAddress, _module.Size - _offsetFromBaseAddress);
 }
示例#4
0
 /// <summary>
 ///     Frees the loaded dynamic-link library (DLL) module and, if necessary, decrements its reference count.
 /// </summary>
 /// <param name="memorySharp">The reference of the <see cref="MemorySharp" /> object.</param>
 /// <param name="module">The module to eject.</param>
 internal static void InternalEject(AProcessSharp memorySharp, AProcessSharpModule module)
 {
     // Call FreeLibrary remotely
     memorySharp.ThreadFactory.CreateAndJoin(memorySharp["kernel32"]["FreeLibrary"].BaseAddress,
                                             module.BaseAddress);
 }
示例#5
0
 public APatternScanner(AProcessSharpModule module) : this(module, 0)
 {
 }