简单的活着

libvmi

Posted on By Mista Cai

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等工具关系梳理

  1. volatility是用来将内存语义重构成数据结构的,可以针对内存转储文件如.dump和.raw等文件执行
  2. libvmi是一个虚拟机自省库,用来访问运行虚拟机的内存的
  3. pyvmi是基于libvmi的,使用pyvmi必须先安装libvmi。libvmi是使用c语言的,而pyvmi是使用python的,这样就可以方便的与其他使用python的工具连接。将volatility配合pyvmi使用,就可以直接重构运行虚拟机的内存,而不用转储成文件后再重构。
  4. kvm(kernel-based Virtual Machine)是系统虚拟化模块,安装这个可以使用并运行虚拟机
  5. libvirt是虚拟化管理工具,是一套c函数库,能配置kvm对kvm中的虚拟机进行管理
  6. virt-manager是一个管理kvm虚拟环境的工具,通过Unix socket访问libvirt来管理kvm虚拟机
  7. 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,官方的差点东西。