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:
- On the top menu bar, click
Window->Script Manager - Using the
Filtersearch bar on the bottom of that window, search forbinsync - Check the box next to the found
binsync_plugin.py - Close the script manager
- 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:
- We start
DecompilerServerin Ghidra's Python process - We subprocess out the command
binsync -s ghidra, which starts the GUI in a new process. - 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 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |