Releases: mandiant/Ghidrathon
v4.0.0
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:
- Download and unzip the latest Ghidrathon release
- 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>
- 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
- configure Ghidrathon using absolute path of Python interpreter used to install Jep by @mike-hunhoff in #85
- add additional checks to ghidrathon_configure.py by @mike-hunhoff in #88
- add unit test for #62 by @mike-hunhoff in #89
- improve configuration steps by @mike-hunhoff in #90
- ci: add build workflow by @mike-hunhoff in #91
Full Changelog: v3.0.2...v4.0.0
v4.0.0-rc1
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:
- Download and unzip the latest Ghidrathon release
- 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>
- 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
- configure Ghidrathon using absolute path of Python interpreter used to install Jep by @mike-hunhoff in #85
- add additional checks to ghidrathon_configure.py by @mike-hunhoff in #88
- add unit test for #62 by @mike-hunhoff in #89
- improve configuration steps by @mike-hunhoff in #90
- ci: add build workflow by @mike-hunhoff in #91
Full Changelog: v3.0.2...v4.0.0-rc1
v3.0.2
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
- update Jep requirement to 4.2 by @mike-hunhoff in #83
Full Changelog: v3.0.1...v3.0.2
v3.0.1
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
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
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
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
- @williballenthin made their first contribution in #54
Full Changelog: v2.1.0...v2.2.0
v2.1.0
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
- Adds support for macOS (
x86_64
) by @Cnly in #40 - Removes
isinstance
andissubclass
workarounds by @colton-gabertan in #39 - Migrates to use
JepConfig
stdout
andstderr
by @ooprathamm in #36 - Uses
google-java-format
for consistent formatting by @mike-hunhoff in #42
Bug Fixes
- Added
numpy
toJep
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
- @colton-gabertan made their first contribution in #39
- @ooprathamm made their first contribution in #36
- @Cnly made their first contribution in #40
Full Changelog: v2.0.1...v2.1.0
v2.0.1
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 overGHIDRA_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 Pythonsys.exit
and friends are executed
Full Changelog: v2.0.0...v2.0.1
v2.0.0
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
andissubclass
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