public override void Initialize() { _stubAssembly = StubWorker.GenerateStub(); _decompressor = CecilHelper.Inject(_stubAssembly.MainModule, Globals.Context.Injections["Decompressor"] as TypeDefinition); _loader = CecilHelper.Inject(_stubAssembly.MainModule, Globals.Context.Injections["Loader"] as TypeDefinition); base.Initialize(); }
public override void ProcessStep() { TypeDefinition resolver; StubWorker.PopulateStub(ref _stubAssembly, _decompressor, _loader, out resolver); StubWorker.StripCoreDependency(ref _stubAssembly, _decompressor, resolver); using (var ms = new MemoryStream()) { Globals.Context.TargetAssembly.Write(ms); var tmpBuff = QuickLZ.compress(ms.ToArray(), Globals.Context.Options.CompressionLevel); _stubAssembly.MainModule.Resources.Add(new EmbeddedResource("X", ManifestResourceAttributes.Public, tmpBuff)); Globals.Context.UIProvider.VerboseLog(string.Format("[Pack(Main)] -> Packed assembly: {0}", Globals.Context.TargetAssembly.Name.Name)); } }
public static IMemberDefinition GetInjection(this AssemblyDefinition asmDef, string name) { IMemberDefinition target = asmDef.MainModule.GetAllTypes().First( t => (t.Namespace == "NETPack.Core.Injections" && t.Name == name)); switch (name) { case "Decompressor": (target as TypeDefinition).Namespace = "N"; target.Name = "K"; return(target); case "Loader": (target as TypeDefinition).Namespace = "npack"; target.Name = "netpack"; var main = (target as TypeDefinition).Methods[0]; StubWorker.SetApartmentState(ref main); return(target); case "Resolver": (target as TypeDefinition).Namespace = "R"; target.Name = "RS"; return(target); case "Watermark": target.Name = "netpackAttrib"; return(target); } throw new Exception("Missing injection"); }