Skip to content

Create ghidra:// links to Ghidra listing locations and Ghidra will navigate there when you click the link.

Notifications You must be signed in to change notification settings

ErikUmble/GhidraLinkPlugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GhidraLinkPlugin

About

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.

Install Ghidra Plugin

  1. Download the latest release here
  2. Copy ghidra_11.3.2_PUBLIC_20250729_GhidraLinkPlugin.zip to <ghidra installation directory>/Extensions/Ghidra/
  3. In Ghidra project manager go to File > Install Extension
  4. Check the GhidraLinkPlugin and click OK
  5. Restart Ghidra
  6. Open the Code Browser with any of the project programs
  7. Use File > Configure > Miscillaneous and check the GhidraLinkPlugin to activate
  8. Test the installation by running
echo "ghidra://filename#address" | nc localhost 24437

in a terminal (replacing filename and address based on your project files) and verifying that the listing view navigated to that offset address.

Configure Link Handler

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.

xdg-open (Linux)

  1. Copy ghidra_open_link.sh or ghidra_open_link.pyw to /usr/bin/ (or your preferred location)
  2. Use chmod +x path/to/ghidra_open_link.* to make it executable
  3. Copy ghidra.desktop to ~/.local/share/applications/
  4. Modify the Exec line of ghidra.desktop to match your path for the ghidra_open_link.* executable
  5. Run xdg-mime default ghidra.desktop x-scheme-handler/ghidra
  6. Run xdg-settings set default-url-scheme-handler ghidra ghidra.desktop

Windows

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.

  1. Copy ghidra_open_link.pyw to a permanent location, such as C:\Scripts\
  2. Modify the command in ghidra.reg to match the paths of your Python installation and the location of ghidra_open_link.pyw
  3. Run ghidra.reg by double clicking and confirming to add to registry

VS Code

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

About

Create ghidra:// links to Ghidra listing locations and Ghidra will navigate there when you click the link.

Resources

Stars

Watchers

Forks

Packages

No packages published