Exemplo n.º 1
0
        public static bool LoadPayload(string PayloadID, byte[] Payload)
        {
            if (Payloads.ContainsKey(PayloadID))
            {
                return(false);
            }

            var TargetAssembly = Assembly.Load(Payload);

            var SharedClass    = TargetAssembly.GetTypes().First(x => x.GetMethods().Any(y => y.GetCustomAttributes(typeof(NLCCall), false).Length > 0));
            var SharedInstance = Activator.CreateInstance(SharedClass);
            var SharedMethods  = new Dictionary <string, MethodInfo>();

            foreach (MethodInfo SharedMethod in SharedClass.GetMethods())
            {
                var SharedMethodAttribute = SharedMethod.GetCustomAttributes(typeof(NLCCall), false);

                if (SharedMethodAttribute.Length > 0)
                {
                    var thisAttr = SharedMethodAttribute[0] as NLCCall;

                    if (SharedMethods.ContainsKey(thisAttr.Identifier))
                    {
                        continue;
                    }

                    SharedMethods.Add(thisAttr.Identifier, SharedMethod);
                }
            }

            Payloads.Add(PayloadID, new Payload()
            {
                Instance = SharedInstance, Methods = SharedMethods
            });

            return(true);
        }