Crates.io | memflow-ffi |
lib.rs | memflow-ffi |
version | 0.2.0 |
source | src |
created_at | 2020-07-16 11:00:50.674325 |
updated_at | 2023-12-25 19:21:41.058592 |
description | C bindings for the memflow physical memory introspection framework |
homepage | https://memflow.github.io |
repository | https://github.com/memflow/memflow |
max_upload_size | |
id | 265718 |
size | 336,090 |
The memflow FFI crate provides an interface to the memflow API for C/C++. Currently a single memflow.h
file is generated aside from the dynamic library that can be used to interact with memflow.
A simple example that initializes the library:
#include "memflow.h"
#include <stdio.h>
int main(int argc, char *argv[]) {
log_init(4);
ConnectorInventory *inv = inventory_try_new();
printf("inv: %p\n", inv);
const char *conn_name = argc > 1? argv[1]: "kvm";
const char *conn_arg = argc > 2? argv[2]: "";
CloneablePhysicalMemoryObj *conn =
inventory_create_connector(inv, conn_name, conn_arg);
printf("conn: %p\n", conn);
if (conn) {
PhysicalMemoryObj *phys_mem = downcast_cloneable(conn);
printf("phys_mem: %p\n", phys_mem);
uint64_t read = phys_read_u64(phys_mem, addr_to_paddr(0x30000));
printf("Read: %lx\n", read);
phys_free(phys_mem);
connector_free(conn);
printf("conn freed!\n");
}
inventory_free(inv);
printf("inv freed!\n");
return 0;
}
Additional examples can be found in the examples
folder.