/// <summary> /// Runs the protection pipeline. /// </summary> /// <param name="pipeline">The protection pipeline.</param> /// <param name="context">The context.</param> static void RunPipeline(ProtectionPipeline pipeline, ConfuserContext context) { Func <IList <IDnlibDef> > getAllDefs = () => context.Modules.SelectMany(module => module.FindDefinitions()).ToList(); Func <ModuleDef, IList <IDnlibDef> > getModuleDefs = module => module.FindDefinitions().ToList(); context.CurrentModuleIndex = -1; pipeline.ExecuteStage(PipelineStage.Inspection, Inspection, () => getAllDefs(), context); var options = new ModuleWriterOptionsBase[context.Modules.Count]; var listeners = new ModuleWriterListener[context.Modules.Count]; for (int i = 0; i < context.Modules.Count; i++) { context.CurrentModuleIndex = i; context.CurrentModuleWriterOptions = null; context.CurrentModuleWriterListener = null; pipeline.ExecuteStage(PipelineStage.BeginModule, BeginModule, () => getModuleDefs(context.CurrentModule), context); pipeline.ExecuteStage(PipelineStage.ProcessModule, ProcessModule, () => getModuleDefs(context.CurrentModule), context); pipeline.ExecuteStage(PipelineStage.OptimizeMethods, OptimizeMethods, () => getModuleDefs(context.CurrentModule), context); pipeline.ExecuteStage(PipelineStage.EndModule, EndModule, () => getModuleDefs(context.CurrentModule), context); options[i] = context.CurrentModuleWriterOptions; listeners[i] = context.CurrentModuleWriterListener; } for (int i = 0; i < context.Modules.Count; i++) { context.CurrentModuleIndex = i; context.CurrentModuleWriterOptions = options[i]; context.CurrentModuleWriterListener = listeners[i]; pipeline.ExecuteStage(PipelineStage.WriteModule, WriteModule, () => getModuleDefs(context.CurrentModule), context); context.OutputModules[i] = context.CurrentModuleOutput; context.OutputSymbols[i] = context.CurrentModuleSymbol; context.CurrentModuleWriterOptions = null; context.CurrentModuleWriterListener = null; context.CurrentModuleOutput = null; context.CurrentModuleSymbol = null; } context.CurrentModuleIndex = -1; pipeline.ExecuteStage(PipelineStage.Debug, Debug, () => getAllDefs(), context); pipeline.ExecuteStage(PipelineStage.Pack, Pack, () => getAllDefs(), context); pipeline.ExecuteStage(PipelineStage.SaveModules, SaveModules, () => getAllDefs(), context); if (!context.PackerInitiated) { context.Logger.Info("Done."); } }
/// <summary> /// Runs the protection pipeline. /// </summary> /// <param name="pipeline">The protection pipeline.</param> /// <param name="context">The context.</param> // Token: 0x0600010B RID: 267 RVA: 0x00009030 File Offset: 0x00007230 private static void RunPipeline(ProtectionPipeline pipeline, ConfuserContext context) { Func <IList <IDnlibDef> > getAllDefs = () => context.Modules.SelectMany((ModuleDefMD module) => module.FindDefinitions()).ToList <IDnlibDef>(); Func <ModuleDef, IList <IDnlibDef> > getModuleDefs = (ModuleDef module) => module.FindDefinitions().ToList <IDnlibDef>(); context.CurrentModuleIndex = -1; pipeline.ExecuteStage(PipelineStage.Inspection, new Action <ConfuserContext>(ConfuserEngine.Inspection), () => getAllDefs(), context); ModuleWriterOptionsBase[] options = new ModuleWriterOptionsBase[context.Modules.Count]; ModuleWriterListener[] listeners = new ModuleWriterListener[context.Modules.Count]; for (int i = 0; i < context.Modules.Count; i++) { context.CurrentModuleIndex = i; context.CurrentModuleWriterOptions = null; context.CurrentModuleWriterListener = null; pipeline.ExecuteStage(PipelineStage.BeginModule, new Action <ConfuserContext>(ConfuserEngine.BeginModule), () => getModuleDefs(context.CurrentModule), context); pipeline.ExecuteStage(PipelineStage.ProcessModule, new Action <ConfuserContext>(ConfuserEngine.ProcessModule), () => getModuleDefs(context.CurrentModule), context); pipeline.ExecuteStage(PipelineStage.OptimizeMethods, new Action <ConfuserContext>(ConfuserEngine.OptimizeMethods), () => getModuleDefs(context.CurrentModule), context); pipeline.ExecuteStage(PipelineStage.EndModule, new Action <ConfuserContext>(ConfuserEngine.EndModule), () => getModuleDefs(context.CurrentModule), context); options[i] = context.CurrentModuleWriterOptions; listeners[i] = context.CurrentModuleWriterListener; } for (int j = 0; j < context.Modules.Count; j++) { context.CurrentModuleIndex = j; context.CurrentModuleWriterOptions = options[j]; context.CurrentModuleWriterListener = listeners[j]; pipeline.ExecuteStage(PipelineStage.WriteModule, new Action <ConfuserContext>(ConfuserEngine.WriteModule), () => getModuleDefs(context.CurrentModule), context); context.OutputModules[j] = context.CurrentModuleOutput; context.OutputSymbols[j] = context.CurrentModuleSymbol; context.CurrentModuleWriterOptions = null; context.CurrentModuleWriterListener = null; context.CurrentModuleOutput = null; context.CurrentModuleSymbol = null; } context.CurrentModuleIndex = -1; pipeline.ExecuteStage(PipelineStage.Debug, new Action <ConfuserContext>(ConfuserEngine.Debug), () => getAllDefs(), context); pipeline.ExecuteStage(PipelineStage.Pack, new Action <ConfuserContext>(ConfuserEngine.Pack), () => getAllDefs(), context); pipeline.ExecuteStage(PipelineStage.SaveModules, new Action <ConfuserContext>(ConfuserEngine.SaveModules), () => getAllDefs(), context); if (!context.PackerInitiated) { context.Logger.Info("Done."); } }