Exemple #1
0
        public static void DisassembleSomthing()
        {
            //  Disassemble the assembly.
            DisassembledAssembly disassembledAssembly = Disassembler.DisassembleAssembly(@"SomeAssembly.dll");

            //  Write out the assembly to a file.
            using (var stream = new FileStream(@"SomeAssembly.il", FileMode.Create, FileAccess.Write))
                using (var writer = new StreamWriter(stream))
                {
                    writer.Write(disassembledAssembly.RawIL);
                }
        }
Exemple #2
0
        public static void EnumerateClasses()
        {
            //  Disassemble the assembly.
            DisassembledAssembly disassembledAssembly = Disassembler.DisassembleAssembly(@"SomeAssembly.dll");

            //  Go through each class.
            foreach (var disassembledClass in disassembledAssembly.Classes)
            {
                //  Write out some details on the class.
                Console.WriteLine("Found class: " + disassembledClass.ShortName);
                Console.WriteLine("Fields: " + disassembledClass.Fields.Count());
                Console.WriteLine("Methods: " + disassembledClass.Methods.Count());
            }
        }
Exemple #3
0
        public static void SearchAssembly()
        {
            //  Disassemble the assembly.
            DisassembledAssembly disassembledAssembly = Disassembler.DisassembleAssembly(@"SomeAssembly.dll");

            //  Create a disassembly target that targets the interface named 'ISomeInterface'.
            DisassemblyTarget target = new DisassemblyTarget(DisassemblyTargetType.Interface, @"SimeAssembly.ISomeInterface");

            //  Search for the interface.
            DisassembledEntity entity = disassembledAssembly.FindDisassembledEntity(target);

            //  If we found it, show the IL.
            if (entity != null)
            {
                Console.WriteLine(entity.RawIL);
            }
        }
Exemple #4
0
        private void BuildViewModel(DisassembledAssembly disassembledAssembly)
        {
            ElementNodes.Clear();
            SelectedElementNode = null;

            //  Create a full document node.
            var assemblyNode = new ElementNodeViewModel(disassembledAssembly)
            {
                Name            = Path,
                DisplayName     = DocumentTitle,
                ElementNodeType = ElementNodeType.Assembly,
                Content         = disassembledAssembly.RawIL
            };

            //  Add the child node.
            foreach (var className in disassembledAssembly.Classes.OrderBy(c => c.ShortName))
            {
                assemblyNode.Nodes.Add(BuildElementNode(className));
            }
            foreach (var className in disassembledAssembly.Structures.OrderBy(c => c.ShortName))
            {
                assemblyNode.Nodes.Add(BuildElementNode(className));
            }
            foreach (var className in disassembledAssembly.Interfaces.OrderBy(c => c.ShortName))
            {
                assemblyNode.Nodes.Add(BuildElementNode(className));
            }
            foreach (var className in disassembledAssembly.Enumerations.OrderBy(c => c.ShortName))
            {
                assemblyNode.Nodes.Add(BuildElementNode(className));
            }
            foreach (var className in disassembledAssembly.Delegates.OrderBy(c => c.ShortName))
            {
                assemblyNode.Nodes.Add(BuildElementNode(className));
            }

            ElementNodes.Add(assemblyNode);
        }