反病毒引擎设计
日期:2008年5月11日 作者:清风网络学院 查看:[大字体 中字体 小字体]-
2.3虚拟机实现技术详解
有了前面关于加密变形病毒的介绍,现在我们知道动态特征码扫描技术的关键就在于必须得到病毒体解密后的明文,而得到明文产生的时机就是病毒自身解密代码解密的完毕。目前有两种方法可以跟踪控制病毒的每一步执行,并能够在病毒循环解密结束后从内存中读出病毒体明文。一种是单步和断点跟踪法,和目前一些程序调试器相类似;另一种方法当然就是虚拟执行法。下面分别分析单步和断点跟踪法和虚拟执行法的技术细节。
单步跟踪和断点是实现传统调试器的最根本技术。单步的工作原理很简单:当CPU在执行一条指令之前会先检查标志寄存器,如果发现其中的陷阱标志被设置则会在指令执行结束后引发一个单步陷阱INT1H。至于断点的设置有软硬之分,软件断点是指调试器用一个通常是单字节的断点指令(CC,即INT3H)替换掉欲触发指令的首字节,当程序执行至断点指令处,默认的调试异常处理代码将被调用,此时保存在栈中的段/偏移地址就是断点指令后一字节的地址;而硬件断点的设置则利用了处理器本身的调试支持,在调试寄存器(DR0--DR4)中设置触发指令的线形地址并设置调试控制寄存器(DR7)中相关的控制位,CPU会在预设指令执行时自动引发调试异常。而Windows本身又提供了一套调试API,使得调试跟踪一个程序变得非常简单:调试器本身不用接挂默认的调试异常处理代码,而只须调用WaitForDebugEvent等待系统发来的调试事件;调试器可利用GetThreadContext挂起被调试线程获取其上下文,并设置上下文中的标志寄存器中的陷阱标志位,最后通过SetThreadContext使设置生效来进行单步调试;调试器还可通过调用两个功能强大的调试API--ReadProcessMemory和WriteProcessMemory来向被调试线程的地址空间中注入断点指令。根据我逆向后的分析结果,VC++的调试器就是直接利用这套调试API写成的。使用以上的调试技术既然可以写出像VC++那样功能齐全的调试器,那么没有理由不能将之运用于病毒代码的自动解密上。最简单的最法:创建待查可执行文件为调试器的调试子进程,然后用上述方法对其进行单步跟踪,每当收到具有EXCEPTION_SINGLE_STEP异常代码的事件时就可以分析该条以单步模式执行的指令,最后当判断病毒的整个解密过程结束后即可调用ReadProcessMemory读出病毒体明文。
用单步和断点跟踪法的唯一一点好处就在于它不用处理每条指令的执行--这意味着它无需编写大量的特定指令处理函数,因为所有的解密代码都交由CPU去执行,调试器不过是在代码被单步中断的间隙得到控制权而已。但这种方法的缺点也是相当明显的:其一容易被病毒觉察到,病毒只须进行简单的堆栈检查,或直接调用IsDebugerPresent就可确定自己正处于被调试状态;其二由于没有相应的机器码分析模块,指令的译码,执行完全依赖于CPU,所以将导致无法准确地获取指令执行细节并对其进行有效的控制。;其三单步和断点跟踪法要求待查可执行文件真实执行,即其将做为系统中一个真实的进程在自己的地址空间中运行,这当然是病毒扫描所不能允许的。很显然,单步和断点跟踪法可以应用在调试器,自动脱壳等方面,但对于查毒却是不合适的。
而使用虚拟执行法的唯一一点缺点就在于它必须在内部处理所有指令的执行--这意味着它需要编写大量的特定指令处理函数来模拟每种指令的执行效果,这里根本不存在何时得到控制权的问题,因为控制权将永远掌握在虚拟机手中。用软件方法模拟CPU并非易事,需要对其机制有足够的了解,否则模拟效果将与真实执行相去甚远。举两个例子:一个是病毒常用的乘法后ASCII调整指令AAM,这条指令因为存在未公开的行为从而常常被病毒用来考验虚拟机设计的优劣。通常情况下AAM是双字节指令,操作码为D4 0A(其实0A隐含代表了操作数10);但也可作为单字节指令明确地指定第二字节除数为任意8位立即数,此时操作码仅为D4。虚拟机必需考虑到后一种指定除数的情况来保证模拟结果的正确性;还有一个例子是关于处理器响应中断的方式,即CPU在刚打开中断后将不会马上响应中断,而必须隔一个指令周期。如果虚拟机没有考虑到该机制则很可能虚拟执行流程会与真实情况不符。但虚拟执行的优点也是很明显的,同时它正好填补了单步和断点跟踪法所力不能及的方面:首先是不可能被病毒觉察到,因为虚拟机将在其内部缓冲区中为被虚拟执行代码设立专用的堆栈,所以堆栈检查结果与实际执行无二(不会向堆栈中压入单步和断点中断时的返回地址);其次由于虚拟机自身完成指令的解码和地址的计算,所以能够获取每条指令的执行细节并加以控制;最后,最为关键的一条在于虚拟执行确实做到了“虚拟”执行,系统中不会产生代表被执行者的进程,因为被执行者的寄存器组和堆栈等执行要素均在虚拟机内部实现,因而可以认为它在虚拟机地址空间中执行。鉴于虚拟执行法诸多的优点,所以将其运用于通用病毒体解密上是再好不过的了。 - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] 下一页
-
- 反病毒引擎设计 相关文章:
- ·卡巴斯基防火墙“反黑客”的设置技巧
- ·谷歌清除恶意链接 黑客反击破坏排名系统
- ·认识反网络钓鱼欺骗新技术
- ·微软Win Vista SP1加强反盗版
- ·企业选择反间谍软件程序10个要点
- ·增加Distinct后查询效率反而提高
- ·文件遭破坏致Win XP系统反复重启
- ·互联网基础建设影响博客 反对封杀P2P
- ·Xml 串行话对象与反串行实例
- ·Photoshop模拟太阳镜上的反光图像
- 反病毒引擎设计 相关软件
- ·《反恐精英》uyr精彩主视角录像
- ·《反恐精英》JAEGARN精彩主视角录像
- ·《反恐精英》录像:aTTaX vs GoodGame
- ·《反恐精英》NoA.ave精彩主视角录像
- ·《反恐精英》录像:MYM vs Logitech.fi
- ·《反恐精英》录像:俄罗斯 vs 法国
- ·《反恐精英》stone精彩主视角录像
- ·《反恐精英》fnatic.f0rest精彩主视角录像
- ·《反恐精英》saken精彩主视角录像
- ·《反恐精英》SK训练地图:glock 下载
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:如何利用ASP把图片上传到数据库
下一篇:反病毒引擎设计
精品推荐
热点TOP10
- ·不再怕电脑病毒 电脑中毒后的6招处理方法
- ·反病毒引擎设计
- ·104种木马的清除方法
- ·免费杀毒软件也是正版,不愁号被封
- ·安全卫士木马播报:警惕网上被“钓鱼”
- ·新挂马方式开始流行 ARP挂马称雄局域网
- ·驱逐令人抓狂的“蓝屏使者”
- ·如何让你的U盘做到100%预防电脑病毒
- ·诺顿杀毒软件正式版用户找回密码的方法
- ·和病毒再见 六款免费杀毒软件对比测试
- ·基础知识讲解 病毒的IFEO映像劫持技术
- ·上网不再怕中毒 教你一招克死所有病毒
- ·总结经典:木马十大藏身地点大搜查
- ·超级详细了解操作系统进程和病毒知识
- ·三招两式抵制IE浏览器顽固病毒
- ·AUTO病毒可致杀软失效系统瘫痪
- ·清除木马Dropper.Win32病毒的方法
- ·魔兽世界新式盗号木马攻破密保卡
- ·掌握系统常用进程 找出病毒不再困难
- ·用木马取得远程电脑上QQ聊天纪录
特别推荐
- ·不再怕电脑病毒 电脑中毒后的6招处理方法
- ·如何让你的U盘做到100%预防电脑病毒
- ·感染虫下载器感染exe文件下载病毒
- ·用木马取得远程电脑上QQ聊天纪录
- ·卡巴内存驻留型病毒检测方法
- ·三招两式抵制IE浏览器顽固病毒
- ·新挂马方式开始流行 ARP挂马称雄局域网
- ·和病毒再见 六款免费杀毒软件对比测试
- ·迅雷把好关 通过下载传播病毒难上加难
- ·清除木马Dropper.Win32病毒的方法
- ·上网不再怕中毒 教你一招克死所有病毒
- ·检测硬盘与内存中病毒痕迹的四种绝招
- ·经验心得:五招提速杀毒软件
- ·ARP网络攻击解决方案:如何查找攻击者
- ·木马病毒绕过主动防御直接刺穿卡巴斯基
- ·狠招 全面禁止瑞星2008随机启动
- ·教你五大妙招 再次提速杀毒软件的效率
- ·灭毒有招 如何全面清除计算机病毒
- ·104种木马的清除方法
- ·多种杀毒软件 操作系统百毒不侵
