コード例 #1
0
        // Token: 0x06000018 RID: 24 RVA: 0x00002C70 File Offset: 0x00000E70
        private void button7_Click(object sender, EventArgs e)
        {
            ModuleDef moduleDef      = ModuleDefMD.Load(this.textBox2.Text);
            bool      virtualization = this.Virtualization;

            if (virtualization)
            {
                foreach (TypeDef typeDef in moduleDef.Types.ToArray <TypeDef>())
                {
                    foreach (MethodDef method in typeDef.Methods.ToArray <MethodDef>())
                    {
                        virtualization.ConvertToDynamic(method, moduleDef);
                    }
                }
            }
            bool calli = this.Calli;

            if (calli)
            {
                bool flag = !this.Virtualization;
                if (flag)
                {
                    calli.Execute(moduleDef);
                }
            }
            foreach (TypeDef typeDef2 in moduleDef.Types.ToArray <TypeDef>())
            {
                foreach (MethodDef methodDef in typeDef2.Methods.ToArray <MethodDef>())
                {
                    bool flag2 = methodDef.HasBody && methodDef.Body.Instructions.Count > 0 && !methodDef.IsConstructor;
                    if (flag2)
                    {
                        bool cflow = this.Cflow;
                        if (cflow)
                        {
                            bool flag3 = !cfhelper.HasUnsafeInstructions(methodDef);
                            if (flag3)
                            {
                                bool flag4 = Form1.Simplify(methodDef);
                                if (flag4)
                                {
                                    Blocks blocks = cfhelper.GetBlocks(methodDef);
                                    bool   flag5  = blocks.blocks.Count != 1;
                                    if (flag5)
                                    {
                                        control_flow.toDoBody(methodDef, blocks);
                                        break;
                                    }
                                }
                                Form1.Optimize(methodDef);
                            }
                        }
                    }
                }
            }
            bool cflow2 = this.Cflow;

            if (cflow2)
            {
                Ctrl_Flow.Brs(moduleDef);
                after_stage.AfterStage(moduleDef);
            }
            bool strings = this.Strings;

            if (strings)
            {
                numbers.InjectClass1(moduleDef);
                numbers.String(moduleDef);
            }
            bool mutation = this.Mutation;

            if (mutation)
            {
                mutatio.Booleanisator(moduleDef);
            }
            bool renamer = this.Renamer;

            if (renamer)
            {
                Renamer.Renamer3.Rename(moduleDef);
            }
            bool numbers = this.Numbers;

            if (numbers)
            {
                numbers.InjectClass(moduleDef);
            }
            foreach (TypeDef typeDef3 in moduleDef.Types.ToArray <TypeDef>())
            {
                foreach (MethodDef methodDef2 in typeDef3.Methods.ToArray <MethodDef>())
                {
                    bool flag6 = methodDef2.HasBody && methodDef2.Body.Instructions.Count != 0;
                    if (flag6)
                    {
                        bool numbers2 = this.Numbers;
                        if (numbers2)
                        {
                            array.Array(methodDef2);
                        }
                    }
                }
            }
            bool cflow3 = this.Cflow;

            if (cflow3)
            {
                cflow.Execute(moduleDef);
            }
            bool antiDumper = this.AntiDumper;

            if (antiDumper)
            {
                antidump.Execute(moduleDef);
            }
            bool numbers3 = this.Numbers;

            if (numbers3)
            {
                numbers.InjectClass(moduleDef);
                numbers.encrypt(moduleDef);
                numbers.encrypt(moduleDef);
            }
            bool strings2 = this.Strings;

            if (strings2)
            {
                numbers.String(moduleDef);
            }
            bool mutation2 = this.Mutation;

            if (mutation2)
            {
                foreach (TypeDef typeDef4 in moduleDef.Types.ToArray <TypeDef>())
                {
                    foreach (MethodDef methodDef3 in typeDef4.Methods.ToArray <MethodDef>())
                    {
                        bool flag7 = methodDef3.HasBody && methodDef3.Body.Instructions.Count != 0;
                        if (flag7)
                        {
                            mutatio.Mutate1(methodDef3);
                        }
                    }
                }
            }
            bool numbers4 = this.Numbers;

            if (numbers4)
            {
                numbers.encrypt(moduleDef);
            }
            bool hideAllMethods = this.HideAllMethods;

            if (hideAllMethods)
            {
                hide_methods_2.Execute(moduleDef);
                hide_methods.Execute(moduleDef);
            }
            bool resourceSpammer = this.ResourceSpammer;

            if (resourceSpammer)
            {
                string s     = "AtomicObfuscator";
                byte[] bytes = Encoding.ASCII.GetBytes(s);
                for (int num3 = 0; num3 < 150; num3++)
                {
                    EmbeddedResource item = new EmbeddedResource(new UTF8String(Form1.RandomString(10)), bytes, ManifestResourceAttributes.Public);
                    moduleDef.Resources.Add(item);
                }
            }
            Directory.CreateDirectory(".\\AtomicProtected\\");
            moduleDef.Write(".\\AtomicProtected\\" + Path.GetFileName(this.textBox2.Text), new ModuleWriterOptions(moduleDef)
            {
                Logger = DummyLogger.NoThrowInstance
            });
            bool packer = this.Packer;

            if (packer)
            {
                context.LoadModule(".\\AtomicProtected\\" + Path.GetFileName(this.textBox2.Text));
                context.PackerPhase();
                context.SaveModule();
            }
        }
コード例 #2
0
        // Token: 0x0600008E RID: 142 RVA: 0x000050A8 File Offset: 0x000032A8
        private void button8_Click_1(object sender, EventArgs e)
        {
            ModuleDef moduleDef = ModuleDefMD.Load(this.textBox1.Text);
            bool      cflow     = this.Cflow;

            if (cflow)
            {
                Ctrl_Flow.Brs(moduleDef);
            }
            bool strings = this.Strings;

            if (strings)
            {
                numbers.InjectClass1(moduleDef);
                numbers.String(moduleDef);
            }
            bool mutation = this.Mutation;

            if (mutation)
            {
                mutatio.Booleanisator(moduleDef);
            }
            bool renamer = this.Renamer;

            if (renamer)
            {
                Atomic.Atomic.Renamer.Renamer3.Rename(moduleDef);
            }
            bool numbers = this.Numbers;

            if (numbers)
            {
                numbers.InjectClass(moduleDef);
            }
            foreach (TypeDef typeDef in moduleDef.Types.ToArray <TypeDef>())
            {
                foreach (MethodDef methodDef in typeDef.Methods.ToArray <MethodDef>())
                {
                    bool flag = methodDef.HasBody && methodDef.Body.Instructions.Count != 0;
                    if (flag)
                    {
                        bool numbers2 = this.Numbers;
                        if (numbers2)
                        {
                            array.Array(methodDef);
                        }
                    }
                }
            }
            foreach (TypeDef typeDef2 in moduleDef.Types.ToArray <TypeDef>())
            {
                foreach (MethodDef methodDef2 in typeDef2.Methods.ToArray <MethodDef>())
                {
                    bool flag2 = methodDef2.HasBody && methodDef2.Body.Instructions.Count > 0 && !methodDef2.IsConstructor;
                    if (flag2)
                    {
                        bool cflow2 = this.Cflow;
                        if (cflow2)
                        {
                            bool flag3 = !cfhelper.HasUnsafeInstructions(methodDef2);
                            if (flag3)
                            {
                                bool flag4 = Form1.Simplify(methodDef2);
                                if (flag4)
                                {
                                    Blocks blocks = cfhelper.GetBlocks(methodDef2);
                                    bool   flag5  = blocks.blocks.Count != 1;
                                    if (flag5)
                                    {
                                        control_flow.toDoBody(methodDef2, blocks);
                                        break;
                                    }
                                }
                                Form1.Optimize(methodDef2);
                            }
                        }
                    }
                }
            }
            bool cflow3 = this.Cflow;

            if (cflow3)
            {
                cflow.Execute(moduleDef);
            }
            bool antiDumper = this.AntiDumper;

            if (antiDumper)
            {
                antidump.Execute(moduleDef);
            }
            bool numbers3 = this.Numbers;

            if (numbers3)
            {
                numbers.InjectClass(moduleDef);
                numbers.encrypt(moduleDef);
                numbers.encrypt(moduleDef);
            }
            bool strings2 = this.Strings;

            if (strings2)
            {
                numbers.String(moduleDef);
            }
            bool mutation2 = this.Mutation;

            if (mutation2)
            {
                foreach (TypeDef typeDef3 in moduleDef.Types.ToArray <TypeDef>())
                {
                    foreach (MethodDef methodDef3 in typeDef3.Methods.ToArray <MethodDef>())
                    {
                        bool flag6 = methodDef3.HasBody && methodDef3.Body.Instructions.Count != 0;
                        if (flag6)
                        {
                            mutatio.Mutate1(methodDef3);
                        }
                    }
                }
            }
            bool numbers4 = this.Numbers;

            if (numbers4)
            {
                numbers.encrypt(moduleDef);
            }
            Directory.CreateDirectory(".\\AtomicProtected\\");
            moduleDef.Write(".\\AtomicProtected\\" + Path.GetFileName(this.textBox1.Text), new ModuleWriterOptions(moduleDef)
            {
                Logger = DummyLogger.NoThrowInstance
            });
            bool packer = this.Packer;

            if (packer)
            {
                context.LoadModule(".\\AtomicProtected\\" + Path.GetFileName(this.textBox1.Text));
                context.PackerPhase();
                context.SaveModule();
            }
            Process.Start(".\\AtomicProtected\\");
        }