示例#1
0
 public void FromConfuserProject(ConfuserProject prj)
 {
     output = prj.OutputPath;
     snKey  = prj.SNKeyPath;
     seed   = prj.Seed;
     dbg    = prj.Debug;
     foreach (var i in prj.Plugins)
     {
         LoadAssembly(Assembly.LoadFrom(i), false);
     }
     if (prj.Packer != null)
     {
         this.packer = new PrjConfig <Packer>(Packers.Single(_ => _.ID == prj.Packer.Id), this);
         foreach (var j in prj.Packer.AllKeys)
         {
             this.packer.Add(new PrjArgument(this)
             {
                 Name = j, Value = prj.Packer[j]
             });
         }
     }
     foreach (var i in prj)
     {
         PrjAssembly asm = new PrjAssembly(this);
         asm.FromCrAssembly(this, i);
         Assemblies.Add(asm);
     }
     foreach (var i in prj.Rules)
     {
         PrjRule rule = new PrjRule(this);
         rule.FromCrRule(this, i);
         Rules.Add(rule);
     }
 }
示例#2
0
        void DropFile(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] file = e.Data.GetData(DataFormats.FileDrop, true) as string[];
                if (file.Length == 1 && Path.GetExtension(file[0]) == ".crproj")
                {
                    host.LoadPrj(file[0]);
                    return;
                }
                foreach (var i in file)
                {
                    if (host.Project.Assemblies.Any(_ => _.Path == i))
                    {
                        continue;
                    }
                    using (var str = File.OpenRead(i))
                    {
                        try
                        {
                            var img = ImageReader.ReadImageFrom(str);
                            str.Position = 0;
                            var asm = new PrjAssembly(host.Project)
                            {
                                Path         = i,
                                IsExecutable = img.EntryPointToken != 0,
                                Assembly     = AssemblyDefinition.ReadAssembly(str)
                            };
                            if (asm.IsExecutable)
                            {
                                if (!HasMain())
                                {
                                    asm.IsMain = true;
                                }
                            }
                            if (string.IsNullOrEmpty(host.Project.OutputPath))
                            {
                                host.Project.OutputPath = Path.Combine(Path.GetDirectoryName(asm.Path), "Confused");
                            }
                            host.Project.Assemblies.Add(asm);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(string.Format(
                                                @"""{0}"" is not a valid assembly!
Message : {1}
Stack Trace : {2}", i, ex.Message, ex.StackTrace), "Confuser", MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                    }
                }
            }
        }