예제 #1
0
        bool find2()
        {
            foreach (var cctor in DeobUtils.getInitCctors(module, 3))
            {
                foreach (var calledMethod in DotNetUtils.getCalledMethods(module, cctor))
                {
                    var type = calledMethod.DeclaringType;
                    if (type.IsPublic)
                    {
                        continue;
                    }
                    var fieldTypes = new FieldTypes(type);
                    if (!fieldTypes.exactly(requiredFields1) && !fieldTypes.exactly(requiredFields2) &&
                        !fieldTypes.exactly(requiredFields3) && !fieldTypes.exactly(requiredFields4))
                    {
                        continue;
                    }
                    if (!hasInitializeMethod(type, "_Initialize") && !hasInitializeMethod(type, "_Initialize64"))
                    {
                        continue;
                    }

                    stringDecrypterMethod = findStringDecrypterMethod(type);
                    initializeMethod      = calledMethod;
                    postInitializeMethod  = findMethod(type, "System.Void", "PostInitialize", "()");
                    loadMethod            = findMethod(type, "System.IntPtr", "Load", "()");
                    cliSecureRtType       = type;
                    return(true);
                }
            }

            return(false);
        }
 public void find()
 {
     foreach (var cctor in DeobUtils.getInitCctors(module, 3))
     {
         if (checkCctor(cctor))
         {
             return;
         }
     }
 }