Skip to content

Releases: mandiant/Ghidrathon

v4.0.0

13 Feb 14:05
f4c0caf
Compare
Choose a tag to compare

This release improves Ghidrathon's installation process across Linux, Windows, and macOS by removing the need for you to manually build the extension (a.k.a no more Gradle 🎉 ).

Now, you can install Ghidrathon into your environment using the following steps:

  1. Download and unzip the latest Ghidrathon release
  2. Execute the following commands using the Python interpreter that you'd like to use with Ghidrathon (requirements.txt and ghidrathon_configure.py are included in the release):
$ python -m pip install -r requirements.txt
$ python ghidrathon_configure.py <absolute_path_to_ghidra_install_dir>
  1. Install the Ghidrathon extension (.zip) into Ghidra

Check out our README for more details.

Switching Python Interpreters

You can now switch between Python interpreters without rebuilding the extension! Simply execute step 2 using the new Python interpreter.

Using Python Virtual Environments

You can use a Python virtual environment with Ghidrathon by executing step 2 from the virtual environment. To switch to a different virtual environment, simply execute step 2 from the new virtual environment.

CI Workflows

This release includes a new CI workflow that tests Ghidrathon across Linux, Windows, and macOS using multiple Ghidra and Python versions. We've also added a new CI workflow to build and publish Ghidrathon for each new release.

What's Changed

Full Changelog: v3.0.2...v4.0.0

v4.0.0-rc1

02 Feb 22:32
f4c0caf
Compare
Choose a tag to compare
v4.0.0-rc1 Pre-release
Pre-release

This release overhauls Ghidrathon's installation process across Linux, Windows, and macOS by removing the need for you to manually build the extension (a.k.a no more Gradle 🎉 ).

Now, you can install Ghidrathon into your environment using the following steps:

  1. Download and unzip the latest Ghidrathon release
  2. Execute the following commands using the Python interpreter that you'd like to use with Ghidrathon (requirements.txt and ghidrathon_configure.py are included in the release):
$ python -m pip install -r requirements.txt
$ python ghidrathon_configure.py <absolute_path_to_ghidra_install_dir>
  1. Install the Ghidrathon extension (.zip) into Ghidra

Check out our README for more details.

Switching Python Interpreters

You can now switch between Python interpreters without rebuilding the extension! Simply execute step 2 using the new Python interpreter.

Using Python Virtual Environments

You can use a Python virtual environment with Ghidrathon by executing step 2 from the virtual environment. To switch to a different virtual environment, simply execute step 2 from the new virtual environment.

CI Workflows

This release includes a new CI workflow that tests Ghidrathon across Linux, Windows, and macOS using multiple Ghidra and Python versions. We've also added a new CI workflow to build and publish Ghidrathon for each new release.

What's Changed

Full Changelog: v3.0.2...v4.0.0-rc1

v3.0.2

19 Dec 22:51
a7b2d9c
Compare
Choose a tag to compare

This release updates the Jep requirement to version 4.2. Jep 4.2 includes many bug fixes and compatibility improvements including support for Python 3.12!

   _____ _     _     _           _   _                 
  / ____| |   (_)   | |         | | | |                
 | |  __| |__  _  __| |_ __ __ _| |_| |__   ___  _ __  
 | | |_ | '_ \| |/ _` | '__/ _` | __| '_ \ / _ \| '_ \ 
 | |__| | | | | | (_| | | | (_| | |_| | | | (_) | | | |
  \_____|_| |_|_|\__,_|_|  \__,_|\__|_| |_|\___/|_| |_|
                                                       
Python 3.12.1 Interpreter for Ghidra 10.4. Developed by FLARE.

>>> import sys
>>> sys.version
'3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)]'

This release also exposes the GhidraScript object to your Python 3 Ghidra scripts by adding a new function named script to the Python 3 builtins scope e.g.

>>> script().toString()
'Ghidrathon'

Please see our Ghidra Python 3 script example here for a closer look at writing Python 3 scripts for Ghidra.

Note: to start using the latest version of Ghidrathon you will need to rebuild using the instructions and updated version requirements outlined in our README.

What's Changed

Full Changelog: v3.0.1...v3.0.2

v3.0.1

06 Sep 13:21
7489831
Compare
Choose a tag to compare

This release exposes the GhidraState object to your Python 3 Ghidra scripts by adding a new function named state to the Python 3 builtins scope.

e.g.

> state() == getState()
True

Please see our Ghidra Python 3 script example here for a closer look at writing Python 3 scripts for Ghidra.

Note: to start using the latest version of Ghidrathon you will need to rebuild using the instructions and updated version requirements outlined in our README.

What's Changed

  • expose GhidraState object using state function added to Python builtins by @mike-hunhoff in #75

Full Changelog: v3.0.0...v3.0.1

v3.0.0

18 Aug 21:32
fdb9d0c
Compare
Choose a tag to compare

This release improves support for the Python shared interpreter changes introduced in v2.2.0.

Note: to start using the latest version of Ghidrathon you will need to rebuild using the instructions and updated version requirements outlined in our README.

Please report any issues to our GitHub.

Breaking Changes

The Ghidra script state variables monitor, currentProgram, currentAddress, currentSelection, currentLocation, and currentHighlight must now be accessed via the function calls monitor(), currentProgram(), currentAddress(), currentSelection(), currentLocation(), and currentHighlight(), respectively. Ghidrathon provides all imported modules with access to these functions by adding them to the builtins scope.

Note: Existing Python 3 scripts must be updated to reflect these changes. See our README for more details.

What's Changed

  • maintain separate Ghidra state for each Python shared interpreter by @mike-hunhoff in #69

Full Changelog: v2.2.1...v3.0.0

v2.2.1

04 Aug 20:31
4797e02
Compare
Choose a tag to compare
v2.2.1 Pre-release
Pre-release

What's Changed

  • fix exception that occurred when extending sys.path on Windows by @mike-hunhoff in #64

Full Changelog: v2.2.0...v2.2.1

v2.2.0

31 Jul 20:36
d463c9d
Compare
Choose a tag to compare
v2.2.0 Pre-release
Pre-release

This release includes out-of-box support for Python modules that do not support multiple Python sub-interpreters running in a single process e.g. numpy, PyO3, Transformers, etc..

Note: to start using the latest version of Ghidrathon you will need to rebuild it using the latest steps and dependencies outlined in our README.

Please report any issues to our GitHub.

What's Changed

  • doc: clarify that disabling Jython has to happen from CodeBrowser by @williballenthin in #54
  • core: fix unhandled exception when empty auto complete clicked by @mike-hunhoff in #60
  • core: switch GhidrathonInterpreter to use Jep SharedInterpreter by @mike-hunhoff in #61

New Contributors

Full Changelog: v2.1.0...v2.2.0

v2.1.0

25 Apr 19:49
f90ba87
Compare
Choose a tag to compare

This release includes support for numpy and macOS (x86_64) and small bug fixes and improvements 🎉

Note: to start using the latest version of Ghidrathon you will need to rebuild using the instructions and updated version requirements outlined in our README.

Please report any issues to our GitHub.

Improvements

Bug Fixes

  • Added numpy to Jep shared modules to prevent Ghidra from crashing by @mike-hunhoff in #41
  • Give preference to Python pdb module when importing from Python by @mike-hunhoff in #41

New Contributors

Full Changelog: v2.0.1...v2.1.0

v2.0.1

11 Jan 23:13
d55e078
Compare
Choose a tag to compare

This release includes small bug fixes and improvements 🎉

Note: to start using the latest version of Ghidrathon you will need to rebuild using the instructions and updated version requirements outlined in our README.

Please report any issues to our GitHub.

Improvements

  • gradle build script outputs GHIDRA_INSTALL_DIR value
  • gradle build script gives priority to GHIDRA_INSTALL_DIR passed via -P argument over GHIDRA_INSTALL_DIR environment variable
  • Ghidrathon is installed under "core plugins" instead of "example plugins"

Bug Fixes

  • catch Python SystemExit exception to prevent Ghidra from closing when Python sys.exit and friends are executed

Full Changelog: v2.0.0...v2.0.1

v2.0.0

07 Nov 21:34
8351555
Compare
Choose a tag to compare

This release includes support for Ghidra 10.2 and Python 3.11!

Welcome first time contributors 🎉

Note: to start using the latest version of Ghidrathon you will need to rebuild using the instructions and updated version requirements outlined in our README.

Please report any issues to our GitHub.

Improvements

  • added Ghidra script variables, e.g. currentProgram, to Python __builtins__ extending access to imported modules
  • enabled use of Python isinstance and issubclass built-in functions against imported Java classes
  • added full path of Python script to Python __file__
  • updated README to match Ghidra 10.2 build requirements

Bug Fixes

  • fixed compilation bug enabling Ghidra 10.2 build
  • removed deprecation warning from GhidrathonScriptProvider
  • removed deprecation warning from GhidrathonPlugin

Development

  • added unit tests

Full Changelog: v1.0.0...v2.0.0