您的位置:首页 > 运维架构 > Linux

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

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



图1 虚拟化调试器框架

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

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

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

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

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

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

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

1. 基于Intel Vt技术的Linux内核调试器 - 引言与Intel VT-x 技术简介
http://home.lupaworld.com/home-space-uid-26540-do-blog-id-250136.html
2. 基于Intel Vt技术的Linux内核调试器 - 调试器主要原理与环境搭建
http://home.lupaworld.com/home-space-uid-26540-do-blog-id-250137.html
3. 基于Intel Vt技术的Linux内核调试器 - 调试器设计与实现(1):基本框架
http://home.lupaworld.com/home-space-uid-26540-do-blog-id-250138.html
4. 基于Intel Vt技术的Linux内核调试器 - 调试器设计与实现(2):调试核心
http://home.lupaworld.com/home-space-uid-26540-do-blog-id-250139.html
5. 基于Intel Vt技术的Linux内核调试器主要问题以及解决
http://home.lupaworld.com/home-space-uid-26540-do-blog-id-250140.html
在看雪论坛上也见过类似的一篇帖子:

VMXICE,未完成的内核调试器,源代码,图,BIN,求指点
http://bbs.pediy.com/showthread.php?t=138569
期待各路大神们完善这个调试器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: