This repository contains the source code for the RPC server of x64dbg Automate. It is used by the x64dbg Automate Python Client to broker IPC between x64dbg and client automation software.
The RPC Server is built on ZeroMQ and supports concurrent debug control and event notification. Message serialization is performed using messagepack.
Full project documentation is published on: https://dariushoule.github.io/x64dbg-automate-pyclient/
See: Installation and Quickstart
🔔 All examples and sample code assume x64dbg is configured to stop on entry and system breakpoints, skipping TLS breakpoints.
Building new features into the RPC interface is easy.
See: x64dbg-automate/blob/main/src/xauto_server.cpp#L27
RPC requests consist of a command identifier and then an argument tuple. Adding new calls is as simple as creating a new command identifier, parsing your argument tuple, and serializing a response.
See the implementation of XAUTO_REQ_DBG_EVAL as an example:
x64dbg-automate/blob/main/src/xauto_cmd.cpp#L20
This is in turn used by the Python client as so: x64dbg-automate-pyclient/blob/main/x64dbg_automate/commands_xauto.py#L64
Events are generally published during plugin callback lifecycle events. Registered callbacks can publish data to the pub/sub ZMQ socket at will and the python client will receive and queue the events.
See: x64dbg-automate/blob/main/src/plugin.cpp#L143
Events are processed and stored by the Python client here: x64dbg-automate-pyclient/blob/main/x64dbg_automate/events.py#L85
From a Visual Studio command prompt:
cmake -B build64 -A x64
cmake --build build64 --config Release
To build the 32-bit plugin:
cmake -B build32 -A Win32
cmake --build build32 --config Release
Issues, feature-requests, and pull-requests are welcome on this project ❤️🐛
My commitment to the community will be to be a responsive maintainer. Discuss with me before implementing major breaking changes or feature additions.