Vector35 / Vector35/debugger

Add x64dbg debugger backend integration for Binary Ninja

Open
#937 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement functionality Impact: Medium
Dominant language
C++
Stars
331
Forks
33
PR merge metrics
No merged PRs in 30d

Description

Add x64dbg debugger backend integration

Summary

Ghidra recently added x64dbg support using x64dbg-automate. This would enable seamless synchronization
between Binary Ninja's static analysis and x64dbg's dynamic debugging.

Proposed Approach

Use the existing x64dbg-automate plugin rather than implementing a custom GDB RSP stub.

Why:

  • ✅ Plugin already exists and is maintained
  • ✅ Full access to x64dbg features (expressions, commands, metadata)
  • ✅ Rich event notifications (breakpoints, threads, DLLs, exceptions)
  • ✅ Quick to implement - can reference Ghidra's implementation
  • ✅ Better than GDB RSP which would require more work for fewer features

Architecture:
Binary Ninja Plugin
↓ (Python client)
x64dbg-automate Plugin (ZeroMQ + MessagePack)

x64dbg.exe

Implementation

  1. Install x64dbg-automate plugin in x64dbg
  2. Use Python client: pip install x64dbg_automate protobuf
  3. Create Binary Ninja plugin that:
    • Launches/attaches to processes
    • Synchronizes breakpoints, registers, memory
    • Handles events from x64dbg

Reference Implementation

Ghidra's x64dbg integration:

  • Location: Ghidra/Debug/Debugger-agent-x64dbg/src/main/py/src/ghidraxdbg/
  • Ghidra Repository

Key Links

Success Criteria

  • Launch/attach to processes from Binary Ninja
  • Bidirectional breakpoint synchronization
  • Register/memory view synchronization
  • Step/continue/pause controls
  • Event handling (breakpoints, exceptions, thread/DLL events)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing Binary Ninja's Debugger API documentation and Ghidra/Debug/Debugger-agent-x64dbg/src/main/py/src/ghidraxdbg/ as the reference implementation. Then examine x64dbg-automate and its Python client to scope process launch or attach, synchronization, and event handling. Done means Binary Ninja supports the listed controls, breakpoint and register/memory synchronization, and breakpoint, exception, thread, and DLL events.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devtools, reverse-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.