Esempio n. 1
0
        public void ApplyHookOn(Hook hook, IRunningProcess process)
        {
            var rule = new HookingRule(process.Name, hook.ModuleName, hook.FunctionName);

            RecreateHookFromRuleOn(new List <IRunningProcess> {
                process
            }, rule);
        }
Esempio n. 2
0
        public void Add(string aProcessName, string aModuleName, string aFunctionName)
        {
            var aHookingRule = new HookingRule(aProcessName, aModuleName, aFunctionName);

            if (_hookingRules.Contains(aHookingRule))
            {
                return;
            }
            _hookingRules.Add(aHookingRule);
        }
Esempio n. 3
0
 public bool Equals(HookingRule other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(AppliesOnProcessNamed(other.ProcessName) && Matches(other.ModuleName, other.FunctionName));
 }
Esempio n. 4
0
 public void Add(string aProcessName, string aModuleName, string aFunctionName)
 {
     var aHookingRule = new HookingRule(aProcessName, aModuleName, aFunctionName);
     if (_hookingRules.Contains(aHookingRule)) return;
     _hookingRules.Add(aHookingRule);
 }
Esempio n. 5
0
        public void ApplyHookOn(Hook hook, IRunningProcess process)
        {
            var rule = new HookingRule(process.Name, hook.ModuleName, hook.FunctionName);

            RecreateHookFromRuleOn(new List<IRunningProcess>{ process }, rule);
        }
Esempio n. 6
0
        private void RecreateHookFromRuleOn(IEnumerable<IRunningProcess> selectedProcesses, HookingRule aRule)
        {
            var matchingProcesses = selectedProcesses.Where(aRule.AppliesOn);
            foreach (var process in matchingProcesses)
            {
                if (!process.IsAlive()) return;

                var module = process.ModuleByName(aRule.ModuleName);
                if (module == null) continue;

                var function = module.FunctionByName(aRule.FunctionName);
                if (function == null) continue;

                _addHook(process, module, function);
            }
        }
Esempio n. 7
0
 public bool Equals(HookingRule other)
 {
     if (ReferenceEquals(null, other)) return false;
     if (ReferenceEquals(this, other)) return true;
     return AppliesOnProcessNamed(other.ProcessName) && Matches(other.ModuleName, other.FunctionName);
 }
Esempio n. 8
0
        private void RecreateHookFromRuleOn(IEnumerable <IRunningProcess> selectedProcesses, HookingRule aRule)
        {
            var matchingProcesses = selectedProcesses.Where(aRule.AppliesOn);

            foreach (var process in matchingProcesses)
            {
                if (!process.IsAlive())
                {
                    return;
                }

                var module = process.ModuleByName(aRule.ModuleName);
                if (module == null)
                {
                    continue;
                }

                var function = module.FunctionByName(aRule.FunctionName);
                if (function == null)
                {
                    continue;
                }

                _addHook(process, module, function);
            }
        }