Merge branch 'GP-6754_ryanmkurtz_jython' into Ghidra_12.1

This commit is contained in:
Ryan Kurtz
2026-04-24 06:10:34 -04:00
49 changed files with 23 additions and 10 deletions

View File

@@ -118,6 +118,11 @@ encoded form; thus, using the encoded form can also create bifurcation in the na
## Processors ## Processors
## Jython Extension
Jython support is now delivered as a Ghidra Extension, which means an extra step is required to
install it. If you require Jython, simply go to `File -> Install Extensions` in the Ghidra
Front End GUI and check "Jython". Restart Ghidra and Jython support will be enabled.
## Additional Bug Fixes and Enhancements ## Additional Bug Fixes and Enhancements
Numerous other new features, improvements, and bug fixes are fully listed in the Numerous other new features, improvements, and bug fixes are fully listed in the
[Change History](ChangeHistory.md) file. [Change History](ChangeHistory.md) file.

View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle" apply from: "$rootProject.projectDir/gradle/distributableGhidraExtension.gradle"
apply from: "$rootProject.projectDir/gradle/javaProject.gradle" apply from: "$rootProject.projectDir/gradle/javaProject.gradle"
apply from: "$rootProject.projectDir/gradle/helpProject.gradle" apply from: "$rootProject.projectDir/gradle/helpProject.gradle"
apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle" apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle"
@@ -21,7 +21,7 @@ apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle"
apply from: "$rootProject.projectDir/gradle/javadoc.gradle" apply from: "$rootProject.projectDir/gradle/javadoc.gradle"
apply plugin: 'eclipse' apply plugin: 'eclipse'
eclipse.project.name = 'Features Jython' eclipse.project.name = 'Xtra Jython'
def JYTHON = "org.python:jython-standalone:2.7.4" def JYTHON = "org.python:jython-standalone:2.7.4"

View File

@@ -4,5 +4,6 @@
Module.manifest||GHIDRA||||END| Module.manifest||GHIDRA||||END|
README.md||GHIDRA||||END| README.md||GHIDRA||||END|
data/jython.theme.properties||GHIDRA||||END| data/jython.theme.properties||GHIDRA||||END|
extension.properties||GHIDRA||||END|
src/main/help/help/TOC_Source.xml||GHIDRA||||END| src/main/help/help/TOC_Source.xml||GHIDRA||||END|
src/main/help/help/topics/Jython/interpreter.html||GHIDRA||||END| src/main/help/help/topics/Jython/interpreter.html||GHIDRA||||END|

View File

@@ -0,0 +1,5 @@
name=Jython
description=The Jython 2.x GhidraScript engine and interpreter plugin
author=Ghidra Team
createdOn=pre-4/23/2026
version=@extversion@

View File

@@ -26,7 +26,7 @@
script-specific code.</LI> script-specific code.</LI>
<LI>Of course if you choose Java, the Ghidra script must be written in Java. <LI>Of course if you choose Java, the Ghidra script must be written in Java.
An implementation for Python (based on Jython) is also provided.</LI> An implementation for Python (based on PyGhidra) is also provided.</LI>
</OL> </OL>
<P align="center"><IMG border="0" src="images/New_Script_Editor.png" ></P> <P align="center"><IMG border="0" src="images/New_Script_Editor.png" ></P>
@@ -161,8 +161,8 @@
uses the same script file extension. If left unspecified, the first Ghidra script runtime uses the same script file extension. If left unspecified, the first Ghidra script runtime
environment that matches the script's extension will be used.<BR> environment that matches the script's extension will be used.<BR>
<BR> <BR>
For example, specify <TT>"@runtime Jython"</TT> if the script is targetted for a Jython 2 For example, specify <TT>"@runtime Jython"</TT> if the script is targeted for a Jython 2
runtime environment rather than a Python 3 runtime environment. runtime environment rather than a CPython 3 (PyGhidra) runtime environment.
</P> </P>
</BLOCKQUOTE> </BLOCKQUOTE>
</BLOCKQUOTE> </BLOCKQUOTE>

View File

@@ -35,7 +35,6 @@ import ghidra.app.plugin.core.osgi.BundleStatusComponentProvider;
import ghidra.app.plugin.core.script.*; import ghidra.app.plugin.core.script.*;
import ghidra.app.script.*; import ghidra.app.script.*;
import ghidra.app.services.ConsoleService; import ghidra.app.services.ConsoleService;
import ghidra.jython.JythonScriptProvider;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.datastruct.LRUSet; import ghidra.util.datastruct.LRUSet;
@@ -223,7 +222,7 @@ public class GhidraScriptMgrPluginScreenShots extends GhidraScreenShotGenerator
List<GhidraScriptProvider> items = new ArrayList<>(); List<GhidraScriptProvider> items = new ArrayList<>();
JavaScriptProvider javaScriptProvider = new JavaScriptProvider(); JavaScriptProvider javaScriptProvider = new JavaScriptProvider();
items.add(javaScriptProvider); items.add(javaScriptProvider);
items.add(new JythonScriptProvider()); //items.add(new JythonScriptProvider());
final PickProviderDialog pickDialog = new PickProviderDialog(items, javaScriptProvider); final PickProviderDialog pickDialog = new PickProviderDialog(items, javaScriptProvider);
runSwing(() -> tool.showDialog(pickDialog), false); runSwing(() -> tool.showDialog(pickDialog), false);

View File

@@ -22,7 +22,8 @@ import java.util.HexFormat;
import java.util.List; import java.util.List;
import org.junit.Test; import org.junit.Test;
import org.python.google.common.primitives.Longs;
import com.google.common.primitives.Longs;
import ghidra.framework.store.LockException; import ghidra.framework.store.LockException;
import ghidra.program.model.address.*; import ghidra.program.model.address.*;

View File

@@ -24,7 +24,8 @@ import java.util.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.junit.Test; import org.junit.Test;
import org.python.google.common.primitives.Longs;
import com.google.common.primitives.Longs;
import ghidra.framework.store.LockException; import ghidra.framework.store.LockException;
import ghidra.util.SourceFileUtils; import ghidra.util.SourceFileUtils;

View File

@@ -22,7 +22,8 @@ import java.util.List;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.python.google.common.primitives.Longs;
import com.google.common.primitives.Longs;
import generic.test.AbstractGenericTest; import generic.test.AbstractGenericTest;
import ghidra.framework.store.LockException; import ghidra.framework.store.LockException;