-
Notifications
You must be signed in to change notification settings - Fork 24
Open
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)
Metadata
Metadata
Assignees
Labels
No labels