To document findings from reverse engineering, it can be helpful to reference sections of a binary analyzed in Ghidra. This Ghidra plugin adds support for links that cause a listing view navigation when clicked.
GhidraLink-demo.mp4
The GhidraLinkPlugin listens for urls of the form ghidra://filename#address sent to the socket on port 24437.
If filename is the name of a program file in the open Ghidra project, this file is opened in the current tool and address is navigated to. The file may be nested inside folders in the Ghidra project, so long as its name is distinct.
To create a link, right click the instruction in the listing view and choose Copy Ghidra Link. Or simply press CTR + SHIFT + C while your cursor is on the instruction you wish to link to.
- Download the latest release here
- Copy
ghidra_11.3.2_PUBLIC_20250729_GhidraLinkPlugin.zipto<ghidra installation directory>/Extensions/Ghidra/ - In Ghidra project manager go to
File > Install Extension - Check the
GhidraLinkPluginand click OK - Restart Ghidra
- Open the Code Browser with any of the project programs
- Use
File > Configure > Miscillaneousand check theGhidraLinkPluginto activate - Test the installation by running
echo "ghidra://filename#address" | nc localhost 24437in a terminal (replacing filename and address based on your project files) and verifying that the listing view navigated to that offset address.
When a ghidra:// link is clicked, we want
the link to be sent to that socket. Use any of the following configurations, depending on your system and requirements.
- Copy
ghidra_open_link.shorghidra_open_link.pywto/usr/bin/(or your preferred location) - Use
chmod +x path/to/ghidra_open_link.*to make it executable - Copy
ghidra.desktopto~/.local/share/applications/ - Modify the
Execline ofghidra.desktopto match your path for theghidra_open_link.*executable - Run
xdg-mime default ghidra.desktop x-scheme-handler/ghidra - Run
xdg-settings set default-url-scheme-handler ghidra ghidra.desktop
Warning: I've experienced issues with the 24437 port on Windows. I find WSL (with the above Linux setup) to work better out of the box.
- Copy
ghidra_open_link.pywto a permanent location, such asC:\Scripts\ - Modify the command in
ghidra.regto match the paths of your Python installation and the location ofghidra_open_link.pyw - Run
ghidra.regby double clicking and confirming to add to registry
Unfortunately, VS code does not yet support custom url protocols yet. A longstanding issue for this exists, so it may work natively (using xdg-open, start, etc. based on the OS) in the future.
The best approach I came up with was this extension. As shown in the demo video above, this enables code hints for each Ghidra link found, and clicking these forwards the link to Ghidra.
Alternatively, you can use code cells with
xdg-open <link>or
echo <link> | nc localhost 24437