Beispiel #1
0
        public void closeToolStripMenuItem_Click(object sender, EventArgs e, ref CurrentAssembly currentAssembly)
        {
            //TODO: Update on changes

            if (SelectedNode == null)
            {
                return;
            }

            TreeNode assembly = SelectedNode.FirstParentNode();

            if (assembly == null)
            {
                return;
            }

            CurrentMethod   = null;
            CurrentModule   = null;
            currentAssembly = null;
            DataGridViewHandler.ClearInstructions();
            VariableHandler.ClearVariables();
            ILSpyHandler.Clear();
            AnalysisHandler.Reset();
            assembly.Remove();
        }
Beispiel #2
0
        public void Search()
        {
            AnalysisHandler.Reset();

            object result = DoSearch();

            if (SearchFinished != null)
            {
                SearchFinished.Invoke(result);
            }

            if (_searchType == SearchType.Any || _searchType == SearchType.MDToken || _searchType == SearchType.StringGlobal)
            {
                AnalysisHandler.SelectTab();
            }
        }
Beispiel #3
0
        public void LoadAssembly(ModuleDefMD manifestModule, string path, bool clear)
        {
            AnalysisHandler.Reset();
            RefNode       = null;
            CurrentModule = null;

            if (clear)
            {
                CurrentTreeView.Nodes.Clear();
            }

            TreeNode file = NewFile(manifestModule, path);

            file.AddTo(CurrentTreeView);

            ModuleDefMD module = manifestModule;

            NameSpaceList.Clear();

            TreeNode moduleNode = NewModule(module);

            moduleNode.AddTo(file);

            CurrentModule = moduleNode;

            if (module.Types.Any())
            {
                foreach (TypeDef type in module.Types.OrderBy(t => t.Name.ToLower()))
                {
                    new TypeHandler(this).HandleType(type, false);
                }
            }

            CurrentModule = moduleNode;

            if (module.GetAssemblyRefs().Any())
            {
                new ReferenceHandler(this).HandleReferences(module.GetAssemblyRefs());
            }

            var processor = new NodeDevirtualizer(RefNode, this);

            processor.ProcessNode();
            processor.WorkerFinished += processor_WorkerFinished;
            RefNode = processor.Node;
        }
Beispiel #4
0
        public void treeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            TreeNode assemblyNode = e.Node.FirstParentNode();

            if (MainForm.CurrentAssembly == null || MainForm.CurrentAssembly.ManifestModule != assemblyNode.Tag as ModuleDefMD)
            {
                AnalysisHandler.Reset();

                MainForm.CurrentAssembly      = new CurrentAssembly(assemblyNode.Tag as ModuleDefMD);
                MainForm.CurrentAssembly.Path = assemblyNode.ToolTipText;

                if (e.Node.ModuleNode() != null)
                {
                    CurrentModule = e.Node.ModuleNode();
                }
            }

            if (e.Node.Tag is MethodDef)
            {
                var method = e.Node.Tag as MethodDef;

                if (CurrentMethod == null || method != CurrentMethod.Tag as MethodDef)
                {
                    ILSpyHandler.Clear();
                    DataGridViewHandler.ReadMethod(method);
                    CurrentMethod = e.Node;

                    NavigationHistory.AddPastHistory(method);
                }
            }
            else
            {
                CurrentMethod = null;
                MainForm.CurrentAssembly.Method = null;
                DataGridViewHandler.ClearInstructions();
                VariableHandler.ClearVariables();
                ILSpyHandler.Clear();
            }

            SelectedNode = e.Node;
        }