Skip to main content

Ghidra

Extra Install Steps

After doing the traditional install, you must activate the BinSync script in Ghidra. Note, you should have launched in PyGhidra mode, which can be done using the Ghidra support/pyghidraRun script. Once launched, open any binary, then:

  1. On the top menu bar, click Window->Script Manager
  2. Using the Filter search bar on the bottom of that window, search for binsync
  3. Check the box next to the found binsync_plugin.py
  4. Close the script manager
  5. BinSync can now be started on the top menu bar Tools->BinSync->Connect

Useful Info

Ghidra's GUI engine is written in Java, but BinSync's GUI is written in Python. To make BinSync's GUI reusable in Ghidra, we run a Python server in Ghidra that exposes BinSync APIs. Then, in another Python process, we connect to that server with the GUI window (which is the client). This gives us the speed of native Python 3 execution in Ghidra, with the bottleneck being GUI operations.

The technicals go like this when you click Connect in Ghidra:

  1. We start DecompilerServer in Ghidra's Python process
  2. We subprocess out the command binsync -s ghidra, which starts the GUI in a new process.
  3. The user uses the new GUI, which is a client, to their server

Support Progress

Operations    Function Headers    Stack Vars    Global Vars    Structs    Enums    Comments    
Symbols✔️✔️✔️✔️✔️
Types✔️✔️✔️✔️✔️
Pull✔️✔️✔️✔️
Push✔️✔️✔️✔️
Auto Push