You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MisterY52 c79f9f2e32 WIP: dtb fix
Updated memflow and memory class in order to fix the dtb value of protected processes.
8 months ago
..
examples WIP: dtb fix 8 months ago
src WIP: dtb fix 8 months ago
.gitignore Replaced vmread with memflow 4 years ago
Cargo.toml WIP: dtb fix 8 months ago
README.md WIP: dtb fix 8 months ago
binddestr.h Replaced vmread with memflow 4 years ago
bindgen.sh WIP: dtb fix 8 months ago
cbindgen.toml WIP: dtb fix 8 months ago
cglue.toml WIP: dtb fix 8 months ago
memflow.h WIP: dtb fix 8 months ago
memflow.hpp WIP: dtb fix 8 months ago
memflow_go.yml WIP: dtb fix 8 months ago
verify_headers.sh WIP: dtb fix 8 months ago

README.md

memflow-ffi

Crates.io build and test codecov MIT licensed Discord

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.