A cross-platform unified interface on top of hypervisor's VMI APIs
libmicrovmi
simply aims to provide a cross-platform unified Virtual Machine Introspection API and the necessary drivers to be
compatible with the diversity of hypervisors available today.
The term micro (μ) refers to the library's simplicity as well as the letter U
standing for Unified
interface.
The grand goal is to be the foundation for a VMI abstraction library that will be - multi-hypervisor - multi-emulator - cross-plaform - high-level API - OS-level semantics - stealth breakpoints - virtual address translation
VMIAddressSpace
VMIAddressSpace
r/w/x
event on a pageFor more detailed information, please check the Wiki
Rust
stablecargo
clang
(bindgen)To build the library, simply run
cargo build
By default, only the Dummy
driver will be available (it does nothing).
To enable a driver, for example xen
, enable the corresponding feature
(Cargo.toml
)
cargo build --features xen
A small binary is available to demonstrate what the libmicrovmi
can do: mem-dump
It will dump the raw memory of the specified domain in a domain_name.dump
file.
Example with the xen
driver:
~~~
$ cargo run --features xen --example mem-dump winxp
~~~
A memory dump should have been written in winxp.dump
.
~~~Rust
// select drive type (Dummy, Xen, KVM, ...)
let drvtype = DriverType::Dummy;
// init library
let mut drv: Box
PRs accepted.
Small note: If editing the Readme, please conform to the standard-readme specification.