Example #1
0
        public static bool OpenFile(TreeViewHandler treeViewHandler, string file, ref CurrentAssembly currentAssembly,
                                    bool clear = false)
        {
            if (string.IsNullOrEmpty(file))
            {
                throw new ArgumentException("No path provided!");
            }

            var newCurrentAssembly = new CurrentAssembly(file);

            if (newCurrentAssembly.ManifestModule == null)
            {
                HandleToolStripItemsState(treeViewHandler);
                return(false);
            }
            currentAssembly = newCurrentAssembly;

            treeViewHandler.LoadAssembly(currentAssembly.ManifestModule, file, clear);
            HandleToolStripItemsState(treeViewHandler);

            return(true);
        }
Example #2
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();
        }
Example #3
0
        public void treeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e,
            ref CurrentAssembly currentAssembly)
        {
            if (!(e.Node.Tag is AssemblyRef) || e.Node.TreeView.SelectedNode != e.Node)
                return;

            var assemblyRef = e.Node.Tag as AssemblyRef;
            string runtimeDirectory = RuntimeEnvironment.GetRuntimeDirectory();
            string directory = Directory.GetParent(currentAssembly.Path).FullName;

            var paths = new List<string>
            {Path.Combine(directory, assemblyRef.Name + ".dll"), Path.Combine(directory, assemblyRef.Name + ".exe")};

            var paths2 = new List<string>
            {
                Path.Combine(runtimeDirectory, assemblyRef.Name + ".exe"),
                Path.Combine(runtimeDirectory, assemblyRef.Name + ".dll")
            };

            if (paths.Where(File.Exists).Count() == 1)
            {
                Functions.OpenFile(this, paths.First(File.Exists), ref currentAssembly);
                return;
            }
            if (paths2.Where(File.Exists).Count() == 1)
            {
                Functions.OpenFile(this, paths2.First(File.Exists), ref currentAssembly);
                return;
            }

            if (
                MessageBox.Show("Could not automatically find reference file. Browse for it?", "Error",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
            {
                currentAssembly = null;
                return;
            }

            var dialog = new OpenFileDialog
            {
                Title = String.Format("Browse for the reference \"{0}\"", assemblyRef.Name),
                Filter = "Executable Files (*.exe)|*.exe|Library Files (*.dll)|*.dll"
            };

            if (dialog.ShowDialog() != DialogResult.OK && File.Exists(dialog.FileName))
            {
                currentAssembly = null;
                return;
            }

            Functions.OpenFile(this, dialog.FileName, ref currentAssembly);
        }
Example #4
0
        public static bool OpenFile(TreeViewHandler treeViewHandler, string file, ref CurrentAssembly currentAssembly,
            bool clear = false)
        {
            if (string.IsNullOrEmpty(file))
                throw new ArgumentException("No path provided!");

            var newCurrentAssembly = new CurrentAssembly(file);

            if (newCurrentAssembly.ManifestModule == null) return false;
            currentAssembly = newCurrentAssembly;

            treeViewHandler.LoadAssembly(currentAssembly.ManifestModule, file, clear);
            return true;
        }
        public void treeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            _treeViewHandler.SelectedNode = null;
            TreeNode assemblyNode = e.Node.FirstParentNode();

            if (_currentAssembly == null || _currentAssembly.ManifestModule != assemblyNode.Tag as ModuleDefMD)
            {
                _currentAssembly = new CurrentAssembly(assemblyNode.Tag as ModuleDefMD)
                {
                    Path = assemblyNode.ToolTipText
                };
            }

            if (e.Node.Tag is MethodDef && _reference == "Method")
                btnSelect.Enabled = true;
            else if (e.Node.Tag is FieldDef && _reference == "Field")
                btnSelect.Enabled = true;
            else if (e.Node.Tag is TypeDef && _reference == "Type")
                btnSelect.Enabled = true;
            else
                btnSelect.Enabled = false;

            if (e.Button == MouseButtons.Right)
            {
                _treeViewHandler.SelectedNode = e.Node;
            }
        }