Add x64dbg debugger backend integration for Binary Ninja
Nobody has claimed this yet.
- 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
- Install x64dbg-automate plugin in x64dbg
- Use Python client:
pip install x64dbg_automate protobuf - 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
- x64dbg-automate Plugin: https://github.com/dariushoule/x64dbg-automate
- Python Client: https://github.com/dariushoule/x64dbg-automate-pyclient
- Documentation: https://dariushoule.github.io/x64dbg-automate-pyclient/
- Binary Ninja Debugger API: https://docs.binary.ninja/guide/debugger.html
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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