Exemplo n.º 1
0
        public override void Write(ModuleWriter writer)
        {
            // Write the header.
            MemberHeader header = new MemberHeader();

            header.memberType  = (byte)MemberHeaderType.Event;
            header.memberName  = GetModule().RegisterString(GetName());
            header.memberFlags = (uint)GetFlags();
            header.memberSize  = 12;
            header.Write(writer);

            // Write the type and accessors..
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            if (addModifier != null)
            {
                writer.Write((uint)addModifier.GetSerialId());
            }
            else
            {
                writer.Write((uint)0);
            }

            if (removeModifier != null)
            {
                writer.Write((uint)removeModifier.GetSerialId());
            }
            else
            {
                writer.Write((uint)0);
            }
        }
Exemplo n.º 2
0
        public override void Write(ModuleWriter writer)
        {
            // Compute the field size.
            int fieldSize = 8;

            if (initializer != null)
            {
                fieldSize += initializer.GetQualifiedSize();
            }

            // Write the header.
            MemberHeader header = new MemberHeader();

            header.memberType       = (byte)MemberHeaderType.Field;
            header.memberName       = GetModule().RegisterString(GetName());
            header.memberFlags      = (uint)GetFlags();
            header.memberSize       = (uint)fieldSize;
            header.memberAttributes = GetAttributeCount();
            header.Write(writer);

            // Write the attributes.
            WriteAttributes(writer);

            // Write the type and the slot.
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            writer.Write((int)slot);

            // Write the initializer.
            if (initializer != null)
            {
                initializer.WriteQualified(GetModule(), writer);
            }
        }
Exemplo n.º 3
0
 public virtual void Write(ModuleWriter writer)
 {
     writer.Write(memberType);
     writer.Write(memberName);
     writer.Write(memberFlags);
     writer.Write(memberSize);
     writer.Write(memberAttributes);
 }
Exemplo n.º 4
0
 public virtual void Write(ModuleWriter writer)
 {
     writer.Write(memberType);
     writer.Write(memberName);
     writer.Write(memberFlags);
     writer.Write(memberSize);
     writer.Write(memberAttributes);
 }
Exemplo n.º 5
0
        private static void CreateAssembly(string assembly, Bitness bitness, Action <ModuleDefMD> modifyAction = null)
        {
            var creationOptions = new ModuleCreationOptions
            {
                Context = ModuleDef.CreateModuleContext(),
                TryToLoadPdbFromDisk = true
            };

            using var module = ModuleDefMD.Load(assembly, creationOptions);

            ChangeBitness(module, bitness);

            modifyAction?.Invoke(module);

            DisableEditAndContinueForModule(module);

            var path         = Path.GetDirectoryName(module.Location);
            var filename     = Path.GetFileNameWithoutExtension(module.Location);
            var extension    = Path.GetExtension(module.Location);
            var saveFilename = $"{filename}.{bitness}{extension}";

            module.Name = saveFilename;

            var moduleWriterOptions = new ModuleWriterOptions(module)
            {
                AddCheckSum = true,
                WritePdb    = true
            };
            var moduleWriter = new ModuleWriter(module, moduleWriterOptions);

            ReplaceMSCOREEReferenceWithIJWHostForNetCoreApp(module, moduleWriter);

            moduleWriter.Write(Path.Combine(path, saveFilename));
        }
Exemplo n.º 6
0
        public override int Execute()
        {
            var hostedScript = new HostedScriptEngine
            {
                CustomConfig = ScriptFileHelper.CustomConfigPath(_path)
            };

            hostedScript.Initialize();
            ScriptFileHelper.OnBeforeScriptRead(hostedScript);
            var source   = hostedScript.Loader.FromFile(_path);
            var compiler = hostedScript.GetCompilerService();

            hostedScript.SetGlobalEnvironment(new DoNothingHost(), source);
            var writer = new ModuleWriter(compiler);

            try
            {
                writer.Write(Console.Out, source);
            }
            catch (ScriptException e)
            {
                Output.WriteLine(e.Message);
                return(1);
            }

            return(0);
        }
Exemplo n.º 7
0
        private void OnOpenAssembly(object sender, RoutedEventArgs e)
        {
            OpenFileDialog d = new OpenFileDialog();
            d.DefaultExt = "Assembly files (*.dll) | *.dll;";

            if (d.ShowDialog() == true)
            {
                try
                {
                    Assembly asm = Assembly.UnsafeLoadFrom(d.FileName);

                    StringBuilder text = new StringBuilder();
                    ModuleWriter mw = new ModuleWriter();
                    mw.Write(text, asm);

                    SaveFileDialog sfd = new SaveFileDialog();
                    sfd.FileName = "Entities.ts";
                    if (sfd.ShowDialog() == true)
                    {
                        string code = text.ToString();

                        using (Stream fs = new FileStream(sfd.FileName, FileMode.Create, FileAccess.Write))
                        {
                            using (TextWriter sw = new StreamWriter(fs))
                            {
                                sw.WriteLine(code);
                            }
                        }
                    }
                }
                catch (ReflectionTypeLoadException ex)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (Exception exSub in ex.LoaderExceptions)
                    {
                        sb.AppendLine(exSub.Message);
                        FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
                        if (exFileNotFound != null)
                        {
                            if (!string.IsNullOrEmpty(exFileNotFound.FusionLog))
                            {
                                sb.AppendLine("Assembly Yüklenemedi:");
                                sb.AppendLine(exFileNotFound.FusionLog);
                            }
                        }
                        sb.AppendLine();
                    }
                    string errorMessage = sb.ToString();
                    MessageBox.Show(errorMessage);
                }
                catch
                {
                    MessageBox.Show("Assembly Okunamadı");
                }
            }
        }
Exemplo n.º 8
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();

            mheader.memberFlags      = (uint)GetFlags();
            mheader.memberName       = 0;
            mheader.memberAttributes = 0;

            ChelaModule module = GetModule();

            if (factory != null)
            {
                // This is a member instance.
                mheader.memberType = (byte)MemberHeaderType.MemberInstance;
                mheader.memberSize = (uint)8;

                // Write the member header.
                mheader.Write(writer);

                // Write the template.
                writer.Write(module.RegisterMember(template));

                // Write the factory id.
                writer.Write(module.RegisterMember(factory));
            }
            else
            {
                // This is a function instance
                mheader.memberType = (byte)MemberHeaderType.FunctionInstance;
                mheader.memberSize = (uint)(4 + genericInstance.GetSize());

                // Write the member header.
                mheader.Write(writer);

                // Write the template id.
                writer.Write(module.RegisterMember(template));

                // Write the template parameters.
                genericInstance.Write(writer, GetModule());
            }
        }
Exemplo n.º 9
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();
            mheader.memberType = (byte) MemberHeaderType.MemberInstance;
            mheader.memberFlags = (uint) GetFlags();
            mheader.memberName = 0;
            mheader.memberSize = 8;
            mheader.memberAttributes = 0;

            // Write the header.
            mheader.Write(writer);

            // Write the template.
            ChelaModule module = GetModule();
            writer.Write(module.RegisterMember(template));

            // Write the factory.
            writer.Write(module.RegisterMember(factory));
        }
Exemplo n.º 10
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();
            mheader.memberFlags = (uint) GetFlags();
            mheader.memberName = 0;
            mheader.memberAttributes = 0;

            ChelaModule module = GetModule();
            if(factory != null)
            {
                // This is a member instance.
                mheader.memberType = (byte)MemberHeaderType.MemberInstance;
                mheader.memberSize = (uint)8;

                // Write the member header.
                mheader.Write(writer);

                // Write the template.
                writer.Write(module.RegisterMember(template));

                // Write the factory id.
                writer.Write(module.RegisterMember(factory));
            }
            else
            {
                // This is a function instance
                mheader.memberType = (byte)MemberHeaderType.FunctionInstance;
                mheader.memberSize = (uint)(4 + genericInstance.GetSize());

                // Write the member header.
                mheader.Write(writer);

                // Write the template id.
                writer.Write(module.RegisterMember(template));

                // Write the template parameters.
                genericInstance.Write(writer, GetModule());
            }
        }
Exemplo n.º 11
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();

            mheader.memberType       = (byte)MemberHeaderType.MemberInstance;
            mheader.memberFlags      = (uint)GetFlags();
            mheader.memberName       = 0;
            mheader.memberSize       = 8;
            mheader.memberAttributes = 0;

            // Write the header.
            mheader.Write(writer);

            // Write the template.
            ChelaModule module = GetModule();

            writer.Write(module.RegisterMember(template));

            // Write the factory.
            writer.Write(module.RegisterMember(factory));
        }
Exemplo n.º 12
0
 public void Write(ModuleWriter writer)
 {
     writer.Write(functionType);
     writer.Write(numargs);
     writer.Write(numlocals);
     writer.Write(numblocks);
     writer.Write(numexceptions);
     writer.Write(vslot);
 }
Exemplo n.º 13
0
 public void Write(ModuleWriter writer)
 {
     writer.Write(baseStructure);
     writer.Write(numinterfaces);
     writer.Write(numfields);
     writer.Write(numvmethods);
     writer.Write(numcontracts);
     writer.Write(nummembers);
 }
Exemplo n.º 14
0
 public void Write(ModuleWriter writer)
 {
     writer.Write(functionType);
     writer.Write(numargs);
     writer.Write(numlocals);
     writer.Write(numblocks);
     writer.Write(numexceptions);
     writer.Write(vslot);
 }
Exemplo n.º 15
0
 public void Write(ModuleWriter writer)
 {
     writer.Write(baseStructure);
     writer.Write(numinterfaces);
     writer.Write(numfields);
     writer.Write(numvmethods);
     writer.Write(numcontracts);
     writer.Write(nummembers);
 }
Exemplo n.º 16
0
        private void btnConvert_Click(object sender, EventArgs e)
        {
            string sourcePath = tbSource.Text;
            string destPath   = AppDomain.CurrentDomain.BaseDirectory + @"\" + tbDestination.Text;

            try
            {
                Assembly asm = Assembly.UnsafeLoadFrom(sourcePath);

                StringBuilder text = new StringBuilder();
                ModuleWriter  mw   = new ModuleWriter();
                mw.Write(text, asm);

                string code = text.ToString();

                using (Stream fs = new FileStream(destPath, FileMode.Create, FileAccess.Write))
                {
                    using (TextWriter sw = new StreamWriter(fs))
                    {
                        sw.WriteLine(code);
                    }
                }
                MessageBox.Show("Entity was successfully created in the path : " + destPath);
            }
            catch (ReflectionTypeLoadException ex)
            {
                StringBuilder sb = new StringBuilder();
                foreach (Exception exSub in ex.LoaderExceptions)
                {
                    sb.AppendLine(exSub.Message);
                    FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
                    if (exFileNotFound != null)
                    {
                        if (!string.IsNullOrEmpty(exFileNotFound.FusionLog))
                        {
                            sb.AppendLine("Assembly cannot be loaded:");
                            sb.AppendLine(exFileNotFound.FusionLog);
                        }
                    }
                    sb.AppendLine();
                }
                string errorMessage = sb.ToString();
                Console.WriteLine(errorMessage);
            }
            catch
            {
                Console.WriteLine("Assembly can not be read!");
            }
        }
Exemplo n.º 17
0
        //Here we replace the AssemblyRef entry for TrinitySeal with Unitas.Runtime
        //With this, we not only hijack all library calls
        //But we also bypass the hash check
        static void ProcessAssembly(string vars)
        {
            Console.WriteLine("Processing assembly...");
            var opts = new ModuleWriterOptions(_mod)
            {
                Logger = DummyLogger.NoThrowInstance
            };
            var writer = new ModuleWriter(_mod, opts);

            foreach (var asmref in _mod.GetAssemblyRefs())
            {
                if (asmref.Name != "TrinitySeal")
                {
                    continue;
                }

                Console.WriteLine("Replacing reference");
                asmref.Name = "Unitas.Runtime";
            }

            Console.WriteLine("Fixing namespaces...");
            foreach (var typeref in _mod.GetTypeRefs())
            {
                if (typeref.Namespace == "TrinitySeal" && typeref.DefinitionAssembly.Name == "Unitas.Runtime")
                {
                    typeref.Namespace = "Unitas.Runtime";
                }
            }

            //Preserve EVERYTHING
            opts.MetadataOptions.PreserveHeapOrder(_mod, true);
            opts.MetadataOptions.Flags |= MetadataFlags.PreserveRids | MetadataFlags.KeepOldMaxStack;

            var runtime = Path.Combine(Path.GetDirectoryName(_mod.Location), "Unitas.Runtime.dll");

            File.Copy(typeof(Seal).Assembly.Location, runtime, true);
            if (vars != null)
            {
                AddServerVariables(vars, runtime);
            }

            writer.Write(GetNewName());
            Console.WriteLine($"Bypassed assembly saved at: {GetNewName()}");
        }
Exemplo n.º 18
0
        public override void Write(ModuleWriter writer)
        {
            // Write the header.
            MemberHeader header = new MemberHeader();
            header.memberType = (byte) MemberHeaderType.Event;
            header.memberName = GetModule().RegisterString(GetName());
            header.memberFlags = (uint) GetFlags();
            header.memberSize = 12;
            header.Write(writer);

            // Write the type and accessors..
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            if(addModifier != null)
                writer.Write((uint)addModifier.GetSerialId());
            else
                writer.Write((uint)0);

            if(removeModifier != null)
                writer.Write((uint)removeModifier.GetSerialId());
            else
                writer.Write((uint)0);
        }
Exemplo n.º 19
0
        /// <summary>
        /// Writes the module to a stream.
        /// </summary>
        /// <param name="dest">Destination stream</param>
        /// <param name="options">Writer options</param>
        public void Write(Stream dest, ModuleWriterOptions options)
        {
            var writer = new ModuleWriter(this, options ?? new ModuleWriterOptions(this));

            writer.Write(dest);
        }
Exemplo n.º 20
0
        /// <summary>
        /// Writes the module to a file on disk. If the file exists, it will be truncated.
        /// </summary>
        /// <param name="filename">Filename</param>
        /// <param name="options">Writer options</param>
        public void Write(string filename, ModuleWriterOptions options)
        {
            var writer = new ModuleWriter(this, options ?? new ModuleWriterOptions(this));

            writer.Write(filename);
        }
Exemplo n.º 21
0
 public void Write(ModuleWriter writer, ChelaModule module)
 {
     writer.Write(module.RegisterString(name));
 }
Exemplo n.º 22
0
        public override void Write(ModuleWriter writer)
        {
            // Compute the field size.
            int fieldSize = 8;
            if(initializer != null)
                fieldSize += initializer.GetQualifiedSize();

            // Write the header.
            MemberHeader header = new MemberHeader();
            header.memberType = (byte) MemberHeaderType.Field;
            header.memberName = GetModule().RegisterString(GetName());
            header.memberFlags = (uint) GetFlags();
            header.memberSize = (uint)fieldSize;
            header.memberAttributes = GetAttributeCount();
            header.Write(writer);

            // Write the attributes.
            WriteAttributes(writer);

            // Write the type and the slot.
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            writer.Write((int)slot);

            // Write the initializer.
            if(initializer != null)
                initializer.WriteQualified(GetModule(), writer);
        }
Exemplo n.º 23
0
 public void Write(ModuleWriter writer, ChelaModule module)
 {
     writer.Write(module.RegisterString(name));
 }
Exemplo n.º 24
0
 public override void Write(ModuleWriter writer)
 {
     writer.Write((uint)GetModule().RegisterType(GetVariableType()));
     writer.Write((uint)0); // Local flags.
 }
Exemplo n.º 25
0
 public override void Write(ModuleWriter writer)
 {
     writer.Write((uint)GetModule().RegisterType(GetVariableType()));
     writer.Write((uint)0);             // Local flags.
 }