我无法区分仪器和虚拟机内省。由于虚拟机内省的目的是通过虚拟机监视器来检查目标的属性,那么仪器技术的目的和用途是什么。
发布于 2013-07-27 12:32:05
术语很滑,不完全稳定;但是,我们可以说,通常“代码插装”涉及对某些目标代码的修改,以便可以对其应用监视工具(或其他类型的自动管理工具);这不一定涉及虚拟机。另一方面,对于虚拟机,用于检查和监视的代码是未经修改的,并且不知道被监视的事实。
例如,如果使用GCC编译C代码,您可以使用-pg命令行标志“分析”它(在单个函数粒度上的性能监视):此标志指示GCC在二进制文件中添加额外的指令,记录每个函数的输入和退出。这是仪器。它不需要任何类型的虚拟机。
作为一个比喻,虚拟机自省就像一个动物学家蹲在一个岩石的山顶上,拿着强大的望远镜,远远地观察着一只狮子在跟踪一群斑马。仪器更像是狮子被镇静剂,绑在检查表上,动物学家在它的喉咙里强制使用内窥镜。不一样的活动,不一样的目标,不一样的收集到的数据;而仪器更具有“侵入性”。
发布于 2013-07-27 18:33:04
狮子的比喻是一个很好的比喻。应该包括的一个有趣的点是,对VM的内省比检测更加困难/目标明确。正如上面tom所说的,在不进行内省的情况下,插装增加了正在检查的代码。这是内省的一个大问题。
Xen这样的虚拟机管理程序的内省API除了允许一个VM检查/映射属于另一个VM的内存之外,不会做更多的事情。如果没有任何仪器来帮助内省程序,它必须能够自己推断出它所观察到的记忆中的东西。这就像“汤姆-韭菜”中的动物学家必须确定狮子和斑马是什么,也许以前从未见过这两种动物(当时不是动物学家?)这个问题被称为“语义鸿沟”。
因此,内省引擎的价值在于它能够确定它所看到的是什么。通常情况下,它必须了解它正在观察的二进制程序的结构。大多数系统使用system.map文件来获取有关Linux内核的数据,然后选择特定的数据结构(进程列表等)进行监视。对于Windows来说,这是一个完全不同的故事,那些在Windows上进行反省的公司通常认为他们的方法是非常有价值的知识产权。
有一家很棒的公司叫做Virtuata,它使用Xen对Windows内核进行了反思。不幸的是,他们去年被思科收购,后来消失了:http://www.cisco.com/web/about/ac49/ac0/ac1/ac259/virtuata.html
很好地阅读了这个主题:
https://security.stackexchange.com/questions/39644
复制相似问题