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