binsync is a free, open source collaboration & communication project written in Python and released under BSD-2-Clause. It has 759 GitHub stars, 63 forks and 59 open issues, and was last pushed 12 days ago. On this registry it ranks #52 of 62 tracked projects in Collaboration & Communication, with 5 head-to-head comparisons available. It gained 14 stars over the last 30 tracked days.

What is binsync?

BinSync is a Git-backed reversing plugin that lets reverse engineers share function headers, stack variables, structs, enums, and comments across IDA Pro, Binary Ninja, angr-management, and Ghidra, and it is for reversing teams whose members do not all work in the same decompiler.

What it is

BinSync is a decompiler collaboration tool built on the Git versioning system. It lives in the reverse engineering plugin ecosystem, distributed as a Python package and loaded as an extension by each supported decompiler. Its working unit is the Reverse Engineering Artifact (REA), the set of objects that good decompilers have in common: function headers carrying symbol, args, and type; stack variables carrying symbol and type; structs; enums; and comments. Those artifacts are what BinSync syncs, and user-created types such as structs are supported alongside the built-in ones. The project is built by mahaloz, the angr team, and the SEFCOM research lab, with substantial use by the Shellphish hacking team.

The concrete problem it solves is that analysis of one binary is normally trapped inside one analyst's decompiler database. Two reversing engineers on the same target who use different tools cannot see each other's renamed functions, retyped stack variables, or annotations without manual export and re-entry, and the same analyst working in two tools loses the same work twice. BinSync replaces that manual transfer with committed, versioned artifacts that any supported decompiler can pull and push. Git supplies the history and the merge boundary, so a team keeps one shared picture of a binary even when no two members open it in the same program.

Key capabilities

  • Syncs five REA classes: function headers (symbol, args, type), stack variables (symbol, type), structs, enums, and comments, including user-created types.
  • Cross-decompiler operation across IDA Pro, Binary Ninja, angr-management, and Ghidra, so a team is not forced onto one tool.
  • Git-backed syncing with distinct Pull, Push, and Auto Push operations, letting artifact changes carry version history.
  • Full support matrix on IDA Pro: symbols, types, pull, push, and auto push across function headers, stack variables, global vars, structs, enums, and comments.
  • Two-part Python installer: pip3 install binsync && binsync --install.
  • Optional extras installed as pip3 install binsync[extras], which pulls in support for features such as the ChatGPT User.
  • Plugin-manager and mode-based loading: Binary Ninja plugin manager, and PyGhidra mode for Ghidra.

Who uses it and how

  • The Shellphish hacking team uses it, alongside the angr team and the SEFCOM research lab that build it, in reversing work where members run different toolchains.
  • Teams split across IDA Pro and Binary Ninja synchronize the same artifacts instead of re-typing names and comments on both sides.
  • IDA Pro users on version 8.4 or newer get the complete matrix, including Auto Push; users on older IDA are directed to BinSync v4.10.1.
  • Ghidra users on version 12.0 or newer, launched in PyGhidra mode, get the minimal feature set of artifact name syncing and comments.
  • angr-management users on version 9.0 or newer participate in the same syncing as the commercial decompiler users.

Getting started

Install with pip3 install binsync && binsync --install, or install from the Binary Ninja plugin manager. Every platform requires Python 3.10 or newer and Git on the system, and Ghidra must be launched in PyGhidra mode; full install guidance is in the quickstart docs.

How it compares

No comparable collaboration tool is named in the facts for this registry, so BinSync stands alone here rather than replacing a listed paid product. The tools it sits among are the decompilers it plugs into: IDA Pro, Binary Ninja, angr-management, and Ghidra. Those are single-analyst analysis environments, and BinSync adds the shared, versioned layer that they lack on their own; its BSD-2-Clause licence and Git-based storage let a team keep the artifact history itself.

When to use it — and when not to

A self-hoster must run Git, since syncing is built on versioning, and must have Python 3.10 or newer on every participating machine; the facts do not mention a database, object storage, or SMTP service to operate. A team should not adopt it expecting parity across decompilers: Ghidra support is still very much in early stage, so only minimal features such as artifact name syncing and comments should be expected there, and the repository carries 59 open issues. Teams standardized entirely on Ghidra, or unwilling to add Git to their reversing workflow, are the weakest fit.

project readme (upstream, from github) — read inline

BinSync

BinSync Logo

BinSync is a decompiler collaboration tool built on the Git versioning system to enable fined-grained reverse engineering collaboration regardless of decompiler. BinSync is built by mahaloz, the angr team, and the SEFCOM research lab. It's also due in large part to its use by the Shellphish hacking team.

All good decompilers share common objects called Reverse Engineering Artifacts (REAs). These REAs are the center of BinSync's syncing ability. Here are the supported REAs:

  • Function headers (symbol, args, type)
  • Stack Variables (symbol, type)
  • Structs
  • Enums
  • Comments

Note: all types support user-created types like structs.

Join our discord below for more online help:

Discord

Quick Start

For all installs, it's best to use our two-part installer with Python:

pip3 install binsync && binsync --install 

BinSync is also available in the Binary Ninja plugin manager. If you plan on using BS with Ghidra, you must launch it in PyGhidra mode. If you plan on using extra BS features, like the ChatGPT User, install the package like this: pip3 install binsync[extras], which will install extra packages for support. For full install information, please read our quickstart docs.

For developers, install the package to be editable (-e) and make sure pip>=23.0.0.

Supported Platforms

  • IDA Pro: >= 8.4 (if you have an older version, use BinSync v4.10.1)
  • Binary Ninja: >= 2.4
  • angr-management: >= 9.0
  • Ghidra: >= 12.0 (PyGhidra mode)

All versions require Python >= 3.10 and Git installed on your system. Ghidra support is still very much in early stage, so only expect the minimal features like artifact name syncing and comments.

Decompiler Support Progress

Although we support the decompilers in the earlier section, not every decompiler is supported at the same level of syncing. To understand the difference between artifact support, pull, push, and auto push, read our decompiler use introduction.

IDA Pro

Operations     Function Headers     Stack Vars     Global Vars     Structs     Enums     Comments    
Symbols :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Types :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Pull :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Push :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Auto Push :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:

Binary Ninja

Operations     Function Headers     Stack Vars     Global Vars     Structs     Enums     Comments    
Symbols :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Types :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Pull :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Push :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Auto Push :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:

Ghidra

Operations     Function Headers     Stack Vars     Global Vars     Structs     Enums     Comments    
Symbols :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Types :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Pull :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Push :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Auto Push :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:

angr-management

Operations     Function Headers     Stack Vars     Global Vars     Structs     Enums     Comments    
Symbols :white_check_mark: :white_check_mark: :x: :x: :x: :white_check_mark:
Types :white_check_mark: :white_check_mark: :x: :x: :x: :white_check_mark:
Pull :white_check_mark: :white_check_mark: :x: :x: :x: :white_check_mark:
Push :white_check_mark: :white_check_mark: :x: :x: :x: :white_check_mark:
Auto Push :white_check_mark: :white_check_mark: :x: :x: :x: :white_check_mark:

Scripting

For scripting please see DecLib, which allows you to do all lifting and data manipulation in Python.

Sponsors

BinSync and its associated projects would not be possible without sponsorship. In no particular order, we'd like to thank all the organizations that have previously or are currently sponsoring one of the many BinSync projects.

NSF
DARPA
ARPA-H
RevEng AI

Frequently asked questions

Is binsync free to use?

binsync is open source under the BSD-2-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does binsync do?

A reversing plugin for cross-decompiler collaboration, built on git.

What is binsync written in?

binsync is primarily written in Python. Its source is publicly available at https://github.com/binsync/binsync, and it has 759 GitHub stars.