注册 登录
LUPA开源社区 返回首页

仰空冥思 http://www.lupaworld.com/?26540 [收藏] [复制] [分享] [RSS]

我的博客

开源项目-基于Intel VT技术的Linux内核调试器

热度 1已有 2536 次阅读2012-8-9 08:49 |个人分类:开源项目|系统分类:IT技术|

     本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明。如下图:

       图1 虚拟化调试器框架

    传统的内核调试器的工作原理是接管中断向量表中的INT1INT3处理程序。前者对应的是 #DB异常,通常是设置了单步标志后引发的单步异常和CPUDR寄存器中定义的内存访问异常引发。后者由int3这条指令引发,而int3这条指令用于调试断点。

    而基于硬件虚拟化技术的调试器以VMM的身份运行,操作系统作为GuestOS,那么VMM将最先截取到CPU异常。因此基于虚拟化技术的调试器不需要替换CPU中断向量表项中的中断处理程序指针,如此一来,我们再稍做一些其他安排,调试器将对操作系统完全透明。

    检测当前是否有调试器调试自己是非常容易的。因此上述这种透明化在一些特殊场合尤为必要。例如一个反病毒工程师试图调试一个伪装严密的Rootkit(内核木马),而Rootkit检测到当前自己正在被调试器调试,就避免进行一些危险的动作,这样反病毒工程师就很难通过调试跟踪来得知这个Rootkit样本的内部结构与危害。而基于虚拟化技术的调试器可以很方便的隐蔽自己,防止被调试程序得知自己正在被调试。

  传统调试器在特殊领域的应用具有一定困难。如果程序拥有反调试机制,那么就首先就需要破解他的反调试机制。而且Linux平台内置的内核调试器KDB使用方法过于复杂,需要重新编译内核。其它一些第三方内核调试器同样不能很好地应用于特殊领域,有一些存在兼容性问题,有一些同样存在易用性的问题,有一些已经停止开发。

   国外hyperdbg项目是一款基于Intel 硬件虚拟化技术的内核调试器。该调试器使用硬件虚拟化技术达到隐藏自身的目的,支持WindowsLinux操作系统。但是一直以来项目开发进度慢,接口不友好,功能单一,只有简单的单步命令和断点命令,对调试符号支持不好,很难将其应用于实际工作中。

    基于以上几点,针对特殊领域的应用,有必要开发一款具有反侦测功能、简单易用的内核调试器。VMXICE调试器就是一款基于Linux的内核调试器,同样使用了硬件虚拟化技术,将当前运行的操作系统运行级别降低为GUEST,而调试器运行级别为HOST,这样一来,不修改中断向量表就可以实现监视和拦截调试中断。操作系统被放置于GUEST,并不能探测在位于HOST的调试器软件,这样的做法被证明可以很好地将调试器隐藏。

    说明:这个开源项目是孟学政同学做的毕业设计,因为他本人是window下软件开发的大牛(习惯于用32位汇编编写程序),曾开发出了基于intel VT的window内核调试器。在我讲授Linux内核操作系统之后,希望他能在Linux下实现同样的功能,以此为毕业设计,他完成了Linux内核调试全部功能。在此,我们将不仅把此项目的源代码全部放出,而且文档也开放。阅读相关文档和代码,你对硬件虚拟化的了解不再停在原理层面,对Linux内核也不仅仅止于阅读其代码,而是真枪实刀的动手实战。

   随后将陆续发布文档和代码。

刚表态过的朋友 (0 人)

发表评论 评论 (4 个评论)

回复 renkic 2012-8-9 16:40
陈老师好啊, 我想这就是这个网站的魅力所在吧
回复 renkic 2012-8-9 16:40
陈老师好啊, 我想这就是这个网站的魅力所在吧
回复 红黑魂 2012-8-13 08:58
   陈老师你好
回复 xcwen 2012-9-12 11:40
有想法。

facelist

您需要登录后才可以评论 登录 | 注册
验证问答 换一个 验证码 换一个

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部