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); } }
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()); } }
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); } }
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); }