4个版本

0.1.5 2020年4月27日
0.1.4 2020年4月12日
0.1.2 2020年4月1日
0.1.1 2020年3月30日

#24 in #simpler

每月35次下载
用于 3 crates

MIT 许可证

67KB
2K SLoC

C 1.5K SLoC // 0.0% comments C++ 393 SLoC Rust 87 SLoC Prolog 19 SLoC Shell 14 SLoC

一个库,用于读取/写入在KVM中运行的Windows的内存

wintools.h和mem.h提供了大部分可以与Windows VM交互的函数,而hlapi以更简单的方式抽象了一切(需要C++)。

Rust绑定可以在单独的仓库中找到。

编译

最低语言标准:C99 当前示例项目使用C++,需要至少C++11和模板支持,但C版本也存在,可以在C99编译器上正常运行。

使用meson和ninja编译示例程序

使用make编译内核模块

性能

内部(QEMU注入)模式比外部模式快约5倍。然而,可以使用内核模块将QEMU的内存空间映射到外部进程,以减轻性能损失。此外,在执行较大的读取时,memcpy迅速达到峰值速度,外部模式开始赶上。性能数据如下。

alt text

常见问题

请确保在KVM虚拟机中使用Q35芯片组,除非它正在运行Windows XP。否则,库可能无法正确工作。如果虚拟机未设置为使用hugepages,则Kmod映射可能无法正常工作或持续很长时间。

许可说明

虽然大多数代码库在MIT许可证下,但内核模块(kmem.c文件)在GNU GPLv2下许可。

依赖关系

~0–2MB
~39K SLoC