libvmi
libvmi
是C语言完成的,所以python使用libvmi
需要基于CFFI
。
目的是可以在Python里面导出libvmi
from libvmi import Libvmi
CFFI
cffi是连接Python与c的桥梁,可实现在Python中调用c文件。cffi为c语言的外部接口,在Python中使用该接口可以实现在Python中使用外部c文件的数据结构及函数。
volatility
,libvmi
,pyvmi
,virt-manager
,libvirt
,virsh
,kvm
等工具关系梳理
- volatility是用来将内存语义重构成数据结构的,可以针对内存转储文件如.dump和.raw等文件执行
- libvmi是一个虚拟机自省库,用来访问运行虚拟机的内存的
- pyvmi是基于libvmi的,使用pyvmi必须先安装libvmi。libvmi是使用c语言的,而pyvmi是使用python的,这样就可以方便的与其他使用python的工具连接。将volatility配合pyvmi使用,就可以直接重构运行虚拟机的内存,而不用转储成文件后再重构。
- kvm(kernel-based Virtual Machine)是系统虚拟化模块,安装这个可以使用并运行虚拟机
- libvirt是虚拟化管理工具,是一套c函数库,能配置kvm对kvm中的虚拟机进行管理
- virt-manager是一个管理kvm虚拟环境的工具,通过Unix socket访问libvirt来管理kvm虚拟机
- virsh是libvirt对应的shell命令,是将libvirt API封装后以Command Line Interface提供的对外接口
问题
1.Github文件缺失build_libvmi.py
,无法直接
$ python3 nitro/build_libvmi.py
2.利用GitHub项目libvmi/pyhton
,添加 libvmi python bindings
build/temp.linux-x86_64-3.6/libvmi.c:493:10: fatal error: libvmi/slat.h: No such file or directory
缺失slat.h
文件,cdef
头文件是C/C++对Python的扩展c-def
;
要用GitHub上面的libvmi,官方的差点东西。