[虚拟机保护] [原创]关于滴水的VT调试器
关于滴水的VT调试器 by 海风月影
论坛上今天吵的比较火热,主要是关于滴水的VT调试器,很多人不了解这个东西,我对Intel的VT技术略有了解,所以我来简单的介绍一下。
第一,什么是VT技术
VT是Intel的硬件虚拟化技术,说到VT,就不得不提虚拟机(例如VMWare)。在硬件还没有支持VT前,系统级的虚拟机其实是很难做的,要考虑的东西非常多(主要是效率问题,因为用软件模拟东西资源开销比较大)。VT技术主要就是为了解决这个问题而诞生的,有了VT后,可以减少非常多的资源开销,让虚拟机的速度接近于真机速度。
OK,那么VT到底是个什么技术呢?
首先要说一下VMM(Virtual Machine Monitor),这个是虚拟机的监控器,监控着虚拟机的运行。比如虚拟机想执行一条指令:cpuid,这个时候被VMM捕捉到,然后VMM去模拟执行这条指令,然后返回给虚拟机,完成了一次vm exit。因为VMM需要执行ring0的指令,所以VMM需要运行在ring0下。
而VT使得CPU进入了一个全新的特殊模式(VMX模式),在这个模式下,CPU可以处于VMX root状态或者VMX non-root状态。处于VMX non-root操作状态下的CPU行为受到了某些方面的限制,关键的共享资源必须运行于VMX root操作状态的监控器的控制之下,并且,对于VMX non-root状态中的任何CPU特权都有效(只要处于VMX non-root状态,ring0 - ring3 都被监控)。因此,将VMM运行于VMX root操作状态,可以轻松监控管理客户操作系统(就是安装在虚拟机里面的操作系统)和客户应用程序(虚拟机里面操作系统里面安装的软件)。
大家可能被绕晕了,我举个例子简单解释一下上面最后一句话
比如:
一个虚拟机,里面装了winxp系统,系统里面有一个记事本程序
OK,winxp内核肯定要运行于ring0,而记事本肯定要运行于ring3,那么VMM怎么高效得管理这两个特权呢?
比如,POPFD这条指令,可以修改EFLAGS的IF位,即中断允许位,但是,在ring3下,是无法修改的。所以,VMM需要先判断客户机处于哪个特权级别(ring0?ring3?),如果ring0就可以修改,如果ring3就拒绝修改。这样的过程就有开销。而VMX non-root状态对任何CPU特权都支持,因此,VMM可以让客户机完全在真实CPU上执行这条指令,不需要考虑这条指令执行后结果会不会出现问题。
简单的说:VT是为了减少虚拟化技术带来的性能开销而开发的硬件虚拟化技术,尽量消除关键指令和关键共享资源(比如内存的访问)的影响。而全新的VMX模式,可以使CPU运行于一个受监控的VMX non-root状态。
具体的VT技术的实现非常复杂,这里就不说了
第二,VT技术和调试技术
首先简单介绍一下调试技术
SoftICE通过给软件代码写入CC(int 3指令),使软件触发BP异常,CPU会调用INT 3中断,而SoftICE hook了系统的INT 3中断,在第一时刻捕获到了BP异常,引发了中断。
单步的话也是改EFLAGS中的TF位,执行后,CPU会调用INT 1中断,而SoftICE hook了系统的INT 1中断,引发了中断。同理还有DRx的设置,引发硬件断点。
有这些中断,SoftICE在中断后可以捕捉当前CPU状态,显示内存内容,就可以进行调试了。
OD的调试就比SoftICE简单多了,OD使用windows的调试功能,最终还是要用到INT 1 / INT 3中断。
所以说,调试功能中,INT 1 / INT 3中断是很重要的。检查一下INT 1 / INT 3可以检测到SoftICE。直接hook掉,OD / SoftICE都用不了了。
然后是VT,上面已经说了VMX non-root模式在任何特权下都可以被VMM监控,其中包括了异常部分。
比如说,在VMX non-root模式,软件触发BP异常,(在VMCS设置了的情况下),CPU不会去执行INT 3中断,而是引发vm exit,即把控制权交给了VMM,VMM就可以像SoftICE一样处理异常,然后再返回到VMX non-root状态,CPU根据设置执行(如果没有设置,CPU会去执行INT 3中断)。同样INT 1也是这样。
这样的好处显而易见,在触发了BP异常后,CPU的第一时间控制权是在VMM手中,而不是INT 3中断上面。所以可以无视hook或者检测。由此,可以达到调试的目的。
第三,DT调试器的基本原理
DT调试器目前是双机的,Host用的是VSICE,Target是自己的驱动(即VMM),两者进行通信,达到调试的目的。
第四,关于ANTI DEBUG
前面对VMM部分说的还算清晰,因此,目前看来基于VT的调试器可以躲过市面上所有的anti,这点大家不用怀疑了,不用再去叫作者测试什么什么了,没有难度的。
=============================================================================================================================================
上面说的是一些基本的概念,下面说一下我对DT调试器的看法
=============================================================================================================================================
这里说的都是我的个人观点
首先,不可否认,这个东西很新颖,基于的调试原理点非常底层,反ANTI能力非常强大。
但VT技术用到调试器上并不是无敌的,毕竟,开了VMX的机器还是可以用比较猥琐的方法检测的,想灭掉所有猥琐检测方法是要下很大的功夫的,DT调试器 1.1版本我拖到IDA里面简单看了一下,是可以被anti的,1.3不知道有没有修复掉。这里我不公开anti方法,因为公开了,作者就可以修复,而且作者花了大工夫,是可以处理掉的。
但是,作者有些东西没有告诉大家,这里我说一下:
VT技术最早从2004年就公开了,这个技术一直到今天,一直还在研发。为了兼容性,Intel给VT技术加了一个版本号,大家可以参考Intel的手册,对于不同版本的CPU,支持VT的技术多少是不一样的。
我举个例子,VT里面可以监控下面这条指令(也就是说VMX non-root状态执行了这条指令,就会被VMM监控到)
SIDT (这条指令是读取IDT向量地址的,要隐藏IDT HOOK,监控这条指令是非常方便的吧 ^_^ )
但是,不是所有CPU都支持这条指令的监控,这个需要检查一下CPU是否支持这个功能,才能够使用。
这样看来,低版本的CPU即使开了VT,也不一定有一些强大功能,尤其是内存部分的监控功能,强大的内存监控部分需要的VT版本号比较高。
所以说,随着以后DT调试器功能越来越多,你也必须跟着升级CPU,否则,某些功能很可能无法使用。
然后,以个人观点说一下DT调试器的前景
1,会用双机调试的人很少,而且双机中需要有带VT的CPU也是比较少的,所以,双机调试没有单机调试来的普及。
2,买了一个DT调试器,用的却是VSICE的界面,心理爽不爽呢?
3,DT调试器的亮点是反ANTI。哪些东西的ANTI比较强大?ring3的程序,可以说ANTI基本上都被灭了,因此,当前情况下,网络游戏的保护系统就是ANTI最强的东西。所以,DT调试器直接对口的人群是涉及网游的人。
涉及网游的人有这几部分:
1,能对付网游保护系统的,这部分人对付网游保护系统的方法一般都是非公开的,因此,研究出方法可以用很长很长时间。反ANTI这个功能对这部分人来说没有什么太大诱惑
2,对付不了网游保护系统的,这部分人一般都是做外挂的(反外挂的人如果调试自己公司游戏对付不了,可以申请剥离保护系统版本去调试,如果是调试其他公司游戏,可以归到做外挂部分中),而成熟的做外挂的团队,对于各个保护系统都是非常熟悉的,所以这部分人肯定不是专业团队,是散户,散户的特点是技术还不够强大,资金比较少,那么DT这种双机调试器,即使买来了也不一定用得很好,所以就会出现观望,或者由于资金问题不买。
所以,DT调试器可能卖给上面第二部分的人或者第一部分人嫌麻烦了,直接买一套。
上面我说到了VT调试器的反ANTI能力很强大,但是不是无敌的,尤其和CPU型号关系非常大,所以,为了过ANTI买调试器的人会考虑到,做网游保护系统的人也可能研究这部分技术,想办法来anti,那
么自己买的东西未必能100%解决问题,这样就加大了观望态度。
最后,我自己YY一下,VT技术本身不是用来调试的,未来Intel公司有可能加入检测VMX模式的功能?这样VT调试器的反ANTI功能直接就没有意义了。
by 海风月影
2009.08.19
[虚拟机保护] [原创]关于滴水的VT调试器相关推荐
- 关于滴水的VT调试器
关于滴水的VT调试器 by 海风月影 论坛上今天吵的比较火热,主要是关于滴水的VT调试器,很多人不了解这个东西,我对Intel的VT技术略有了解,所以我来简单的介绍一下. 第一,什么是VT技术 VT是 ...
- vb计算机怎么制作,教你如何制作VB的PCode调试器 -电脑资料
P-Code简介 术语P-Code既不是一个新名词也不是Microsoft的发明,P-Code只是简单地被解释执行的伪指令, MSVBVM50.DLL MSVBVM60.DLL 文件名称清晰的表明是M ...
- eac 反调试_自己动手制作一个过保护调试器
一.起因 本人是新手第一次接触驱动开发的小白,事情是这样的,一个星期前突发奇想想做一个调试器保护程序用于调试游戏,既然要调试驱动保护的程序,自然也要深入驱动底层.做调试器必须要hook api去隐藏调 ...
- 开源项目-基于Intel VT技术的Linux内核调试器
本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...
- eac 反调试_一种可能被用于EAC保护的检测调试器方案
测试环境: Windows7 x64 虚拟机 win10 1809 x64 虚拟机 0x0 起因 小伙伴 @DBDig 最近也在玩APEX这个游戏,因为这个游戏有EAC保护所以有反调试,遂准备安排它. ...
- 【分享】VMProtect使用技巧汇集__最好的虚拟机保护软件之一
2019独角兽企业重金招聘Python工程师标准>>> VMProtect是目前最强大的虚拟机保护软件之一,适合Visual Basic(native),Visual C,Delph ...
- VMProtect使用技巧汇集__最好的虚拟机保护软件之一
VMProtect 官方站点: http://www.vmprotect.ru 作 者:PolyTech (俄国) VMProtect是目前最强大的虚拟机保护软件之一,适合Visual Bas ...
- 第零课、开启ce自身保护、设置od,让调试不非法
第零课.开启ce自身保护.设置od,让调试不非法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...
- 日均保护原创超6万篇,腾讯“至信链”助企鹅号作者一键维权
区块链技术正在内容原创保护领域发挥关键作用.据腾讯内容开放平台最新发布的企鹅号版权保护年度报告显示,基于腾讯云区块链技术的"至信链"在过去一年有效保护原创作品超过1000万篇,由& ...
最新文章
- 进程通信之二 管道技术第二篇 匿名管道
- 【译】Android中的安全数据— Android中的加密(第1部分)
- 记一次继承了AbstractAuthenticationProcessingFilter 的过滤器被执行了两次问题
- 面试官:. NET5源码里用到了哪些设计模式?懵!
- python是用来初始化_python的初始化运行了哪些?
- git rebase 工作流
- Spring Boot开发八字箴言(以我过去这段时间的经验总结得到)
- 书单丨把握Java技术发展的新趋势!
- 20140608 科技脉搏 -下半身需求是人类共同需求,有多少人就有多大市场
- 手机短信注册页面h5css3+html5模板
- Windows-QT安装后,又要安装mingw32/64怎么办?
- uniapp点击复制文本
- 项目启动正常,访问出现404
- ir2110驱动占空比不能太高
- 哈工大遗传学B期末复习
- 【Windows11+Ubuntu20.04】双系统安装及美化、优化记录
- 【软件测试必备技能】Linux
- concurrent.futures模块使用
- netstat 的各个 state 什么意思
- 库房计算机管理,库房管理