AsmResolver.TreeBuilder.ConstructAssemblyNode C# (CSharp) Метод

ConstructAssemblyNode() публичный статический Метод

public static ConstructAssemblyNode ( Win32Assembly assembly ) : TreeNode
assembly TUP.AsmResolver.Win32Assembly
Результат System.Windows.Forms.TreeNode
        public static TreeNode ConstructAssemblyNode(Win32Assembly assembly)
        {
            TreeNode assemblyNode = CreateNode(assembly.Path.Substring(assembly.Path.LastIndexOf('\\') + 1), assembly);

            assemblyNode.Nodes.AddRange(new TreeNode[] {
                CreateNode("Dos Header", assembly.MZHeader),
                CreateNode("NT Header", assembly.NTHeader).AddSubNodes(new TreeNode[] {
                    CreateNode("File Header", assembly.NTHeader.FileHeader),
                    CreateNode("Optional Header", assembly.NTHeader.OptionalHeader).AddSubNodes(new TreeNode[] {
                        CreateArrayNode("Data Directories", assembly.NTHeader.OptionalHeader.DataDirectories, (obj) => { return ((DataDirectory)obj).Name.ToString(); }),
                    })

                }),
                CreateArrayNode("Sections", assembly.NTHeader.Sections.ToArray(), (obj) => { return ((Section)obj).Name; }),

                CreateArrayNode("Export Directory", assembly.LibraryExports.ToArray()),
                CreateArrayNode("Import Directory", assembly.LibraryImports.ToArray(), (obj) => { return ((LibraryReference)obj).LibraryName; }).AddForEachNode((tag) => { return ((LibraryReference)tag.Object).ImportMethods; }, (obj) => { return ((ImportMethod)obj).Name;}),
                CreateNode("Resource Directory", assembly.RootResourceDirectory, TreeNodeType.ResourcesTree),

                CreateNode(".NET Directory", assembly.NETHeader, (netHeader)=> { return assembly.NTHeader.IsManagedAssembly; }).AddSubNodes(new TreeNode[] {
                    CreateNode("MetaData Header", assembly.NETHeader.MetaDataHeader),
                    CreateArrayNode("MetaData Streams", (assembly.NETHeader.MetaDataStreams != null ? assembly.NETHeader.MetaDataStreams.ToArray() : null), (obj) => { return ((MetaDataStream)obj).Name; }).AddForEachNode((tag) => { return (tag.Object is TablesHeap ? tag.Object : null); } , (obj) => { return "Tables";}, TreeNodeType.TablesTree)

                }),
                CreateNode("Hex Editor", new DynamicFileByteProvider(assembly.Image.Stream), TreeNodeType.HexBox),
                CreateNode("Disassembler", assembly.Disassembler, TreeNodeType.Disassembler),
            });

            return assemblyNode;
        }

Usage Example

Пример #1
0
 private void OpenFile(string file, ReadingParameters parameters)
 {
     try
     {
         Win32Assembly assembly = Win32Assembly.LoadFile(file, parameters);
         treeView1.Nodes.Add(TreeBuilder.ConstructAssemblyNode(assembly));
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }