From 91cb8015214f7e86e91a2c4c0307510ea322d076 Mon Sep 17 00:00:00 2001
From: Ryan Kurtz
Date: Fri, 23 Feb 2024 08:50:28 -0500
Subject: [PATCH] GP-707: GhidraDev updates
- New wizard to import a module source dir
- Ghidra won't launch if build dir is present
- Better validation when exporting extension
---
.../GhidraDevPlugin/.launch/GhidraDev.launch | 54 +++----
.../GhidraDevPlugin/GhidraDev_README.html | 16 ++
.../GhidraDevPlugin/META-INF/MANIFEST.MF | 1 +
.../GhidraDev/GhidraDevPlugin/plugin.xml | 33 ++++
.../launchers/GhidraLaunchDelegate.java | 9 ++
.../GhidraProjectCreatorPreferences.java | 28 ++++
.../utils/GhidraLaunchUtils.java | 1 +
.../utils/GhidraModuleUtils.java | 91 +++++++++++
.../utils/GhidraProjectUtils.java | 5 +
.../CreateGhidraModuleProjectWizard.java | 2 +-
.../CreateGhidraScriptProjectWizard.java | 2 +-
.../wizards/ExportGhidraModuleWizard.java | 27 ++++
.../ImportGhidraModuleSourceWizard.java | 150 ++++++++++++++++++
.../ChooseGhidraModuleSourceWizardPage.java | 124 +++++++++++++++
.../pages/CreateGhidraProjectWizardPage.java | 69 ++++----
.../ghidrasymbollookup/OpenDeclarations.java | 1 +
GhidraBuild/Skeleton/build.gradle | 1 +
GhidraBuild/Skeleton/certification.manifest | 1 +
GhidraBuild/Skeleton/gitignore | 10 ++
.../main/java/skeleton/SkeletonAnalyzer.java | 4 +-
20 files changed, 568 insertions(+), 61 deletions(-)
create mode 100644 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/wizards/ImportGhidraModuleSourceWizard.java
create mode 100644 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/wizards/pages/ChooseGhidraModuleSourceWizardPage.java
create mode 100644 GhidraBuild/Skeleton/gitignore
diff --git a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/.launch/GhidraDev.launch b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/.launch/GhidraDev.launch
index 7c584addef..5ab9dc9fdf 100644
--- a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/.launch/GhidraDev.launch
+++ b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/.launch/GhidraDev.launch
@@ -163,19 +163,19 @@
-
-
+
-
-
-
-
+
+
+
+
+
@@ -184,10 +184,10 @@
-
+
@@ -204,9 +204,8 @@
+
-
-
@@ -220,13 +219,10 @@
-
+
-
-
-
@@ -250,9 +246,9 @@
-
+
@@ -289,15 +285,15 @@
+
-
-
+
@@ -309,14 +305,18 @@
+
+
+
+
-
+
+
-
@@ -324,30 +324,33 @@
-
+
-
-
+
+
+
+
-
+
+
@@ -361,7 +364,6 @@
-
@@ -421,16 +423,12 @@
-
-
-
-
-
+
diff --git a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/GhidraDev_README.html b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/GhidraDev_README.html
index 4445354977..80f1d798a6 100644
--- a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/GhidraDev_README.html
+++ b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/GhidraDev_README.html
@@ -36,6 +36,7 @@ change with future releases.
New Ghidra Script
New Ghidra Script Project
New Ghidra Module Project
+ Import Ghidra Module Source
Export Ghidra Module Extension
Preferences
Link Ghidra
@@ -59,6 +60,14 @@ change with future releases.
GhidraDev has been upgraded to be compatible with Ghidra 11.1 and later. Older versions of
GhidraDev will report an error when trying to link against Ghidra 11.1 or later.
+
+ GhidraDev now supports importing a Ghidra module source directory. This will work best
+ with Ghidra module projects created from Ghidra 11.1 or later.
+
+
+ GhidraDev will now fail to launch Ghidra if a top-level build directory is detected.
+ Presence of this intermediate build artifact can cause Ghidra to have runtime/debugging issues.
+
3.0.2:
@@ -243,6 +252,13 @@ installed into Ghidra as an "extension".
project can be initialized with optional template source files that provide a good starting
point for implementing advanced Ghidra features such as Analyzers, Plugins, Loaders, etc.
+
+ Import
+
+ -
+ Ghidra Module Source: Opens a wizard that
+ imports a Ghidra module source directory as a new Ghidra module project.
+
Export
diff --git a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF
index 2f3440cde9..b39940a0de 100644
--- a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF
+++ b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF
@@ -9,6 +9,7 @@ Require-Bundle: org.eclipse.ant.core;bundle-version="3.6.200",
org.eclipse.buildship.core;bundle-version="3.1.5",
org.eclipse.core.expressions;bundle-version="3.8.100",
org.eclipse.core.externaltools;bundle-version="1.2.100",
+ org.eclipse.core.resources;bundle-version="3.16.0",
org.eclipse.core.runtime;bundle-version="3.24.0",
org.eclipse.debug.ui;bundle-version="3.15.200",
org.eclipse.jdt.core;bundle-version="3.28.0",
diff --git a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/plugin.xml b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/plugin.xml
index f4538462fa..ceacc9e878 100644
--- a/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/plugin.xml
+++ b/GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/plugin.xml
@@ -38,6 +38,23 @@
project="true">
+
+
+
+
+
+ Imports a Ghidra module source directory to a new project.
+
+
+
+
+ Exports a Ghidra module project to a zipped Ghidra extension.
+
+