QEMU plugins written in Rust with https://github.com/novafacing/qemu-rs learned a new trick, thanks to upstream QEMU developers! Reading register state is now available during QEMU plugin execution, and that means way more powerful plugins.

Looking forward to cool tools that use this capability, and I'm so sad it wasn't available when I was working on my thesis!

GitHub - novafacing/qemu-rs: QEMU for Rust, and Rust for QEMU

QEMU for Rust, and Rust for QEMU. Contribute to novafacing/qemu-rs development by creating an account on GitHub.

GitHub
I added an option to log registers to the example Tracer plugin https://github.com/novafacing/qemu-rs/tree/main/plugins/tracer to demonstrate how to use the new API. There's a bit of a hefty performance penalty to using register inspection, so we will do some work to optimize (maybe by keeping a GByteArray per register instead of allocating and freeing a new one every time we read) but I wanted to get the feature support in first.
qemu-rs/plugins/tracer at main · novafacing/qemu-rs

QEMU for Rust, and Rust for QEMU. Contribute to novafacing/qemu-rs development by creating an account on GitHub.

GitHub