#memflow #memory #introspection #dma #api-bindings

memflow-ffi

C语言绑定用于memflow物理内存内省框架

14个版本

0.2.0 2023年12月25日
0.2.0-beta82022年10月30日
0.2.0-beta7 2022年7月24日
0.2.0-beta52022年3月20日
0.0.0 2020年7月16日

#637 in 内存管理

Download history 7/week @ 2024-03-09 1/week @ 2024-03-16 51/week @ 2024-03-30 17/week @ 2024-04-06 2/week @ 2024-05-18

74 每月下载量
用于 memflow-win32-ffi

MIT 许可证

700KB
13K SLoC

memflow-ffi

Crates.io build and test codecov MIT licensed Discord

memflow FFI crate 提供了 C/C++ 对 memflow API 的接口。除了动态库之外,还会生成一个名为 memflow.h 的文件,用于与 memflow 交互。

一个简单的初始化库的示例

#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;
}

更多示例可以在 examples 文件夹中找到。

依赖

~6–15MB
~175K SLoC