反病毒引擎设计
日期:2007年9月15日 作者: 查看:[大字体 中字体 小字体]-
下面开始介绍32位自含代码虚拟机w32encode(w32encode.cpp,Tw32asm.h,Tw32asm.cpp做为查毒引擎的一部分和其它搜索清除模块联编为Rsengine.dll)的程序结构和流程。由于这是一个设计完备且复杂的大型商用虚拟机,其中不可避免地包含了对某些特定病毒的特定处理,为了使虚拟机模型的结构清晰脉络分明,分析时我将做适当的简化。
w32encode的工作原理很简单:它首先设置模拟寄存器组(用一个DWORD全局变量模拟真实CPU内部的一个寄存器,如ENEAX)的初始值,初始化执行堆栈指针(虚拟机用内部的一个数组static int STACK[0x20]来模拟堆栈)。然后进入一个循环,解释执行指令缓冲区ProgBuffer中的头256条指令,如果循环退出时仍未发现病毒的解密循环则可由此判定非加密变形病毒,若发现了解密循环则调用EncodeInst函数重复执行循环解密过程,将病毒体明文解密到DataSeg1或DataSeg2中。相关部分代码如下:
W32Encode0中总体流程控制部分代码:
for (i=0;i<0x100;i++) //首先虚拟执行256条指令试图发现病毒循环解密子
{
if (InstLoc>=0x280)
return(0);
if (InstLoc+ProgSeeKOFf>=ProgEndOff)
return(0); //以上两条判断语句检查指令位置的合法性
saveinstloc(); //存储当前指令在指令缓冲区中的偏移
HasAddNewInst=0;
if (!(j=parse())) //虚拟执行指令缓冲区中的一条指令
return(0); //遇到不认识的指令时退出循环
if (j==2) //返回值为2说明发现了解密循环
break;
}
if (i==0x100) //执行过256条指令后仍未发现循环则退出
return(0);
PreParse=0;
ProcessInst();
if (!EncodeInst()) //调用解密函数重复执行循环解密过程
return(0);
jmp中判定循环出现部分代码:
if ((loc>=0)&&(loc<InstLoc)) //若转移后指令指针小于当前指令指针则可能出现循环
if (!isinstloc(loc)) //在保存的指令指针数组InstLocArray中查找转移后指
...... //令指针值,如发现则可判定循环出现
else
{
......
return(2); //返回值2代表发现了解密循环
}
parse中虚拟执行每条指令的过程较复杂一些:通常parse会从取得指令缓冲区ProgBuffer中取得当前指令的头两个字节(包括了全部操作码)并根据它们的值调用相应的指令处理函数。例如当第一个字节等于0F并且第二个字节位与BE后等于BE时,可判定此指令为movszx并同时调用movszx进行处理。当执行进入特定指令的处理函数中时,首先要通过判断寻址方式(调用modregrm或modregrm1)确定指令长度并将控制权交给saveinst函数。saveinst在保存该指令的相关信息后会调用真正指令执行函数W32ExecuteInst。这个函数和parse非常相似,它从SaveInstBuf1中取得当前指令的头两个字节并根据它们的值调用相应的指令模拟函数以完成一条指令的执行。相关部分代码如下:
W32ExecuteInst中指令分遣部分代码: - 上一页 [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] [33] 下一页
-
- 反病毒引擎设计 相关文章:
- ·反病毒引擎设计
- ·候捷谈Java反射机制
- ·反病毒引擎设计全解
- ·正反两极端 细看微软Vista十大得失
- ·ASP.NET默认的上传组件支持进度条反映
- ·常见电子书格式及其反编译思路
- ·开机找不到硬盘,进入BIOS将IDE口设为"AUTO"状态,反复按回车键,过几分钟后,才能找到硬盘并正常使用
- ·反病毒知识:如何让你的移动硬盘在DOS下杀毒
- ·强力反驳:子虚乌有的Windows Vista二十宗罪
- ·什么时候oracle使用绑定变量性能反而更差
- 反病毒引擎设计 相关软件
- ·《反恐精英CS1.6》完整安装版本
- ·反P2P终结者
- ·反恐精英 CS 1.5 机器人补丁
- ·反恐精英CS龙珠中文硬盘版
- ·近距离作战4阿登反击战
- ·《反恐精英CS 1.5》免CD-KEY版
- ·1941反击战(1941 - Counter Attack)
- ·薛刚反唐
- ·反恐精英之起源(CS2.0)
- ·反时间限制器 Anti-Timer V1.0 绿色版
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:蜜罐技术:消除防火墙局限和脆弱
精品推荐
热点TOP10
- ·端口大全及端口关闭方法
- ·反病毒引擎设计
- ·防御局域网攻击 ZT
- ·DLL后门清除完全篇
- ·104种木马手工清除方法
- ·元旦佳节慎防Happy New Year病毒
- ·图文教你防范“局域网终结者”攻击
- ·Hook 系统服务隐藏端口
- ·知道么 如何防止电脑被黑客入侵
- ·冲击波(MSBlast)蠕虫分析报告
- ·木马清除百种方法
- ·你的端口随意开,偶就进去共享你的资料
- ·战术攻防思维撷粹
- ·从十大方面入手 教你摆脱黑客的攻击
- ·管理本机端口 防范木马程序
- ·网络安全基础:防火墙的概念及实现原理
- ·再次渗透国内XX知名杀毒软件厂商网站全记录
- ·防火墙技术说明及发展趋势
- ·木马图文档案(冰河篇)
- ·系统被入侵后的恢复
特别推荐
- ·防止对WEB应用服务器的三种攻击
- ·防御DDoS攻击的实时监测模型
- ·DLL后门清除完全篇
- ·网络世界分析:防火墙的来历及应用现状
- ·从十大方面入手 教你摆脱黑客的攻击
- ·端口大全及端口关闭方法
- ·反病毒引擎设计
- ·小心做好防范 zpx520.com劫持浏览器
- ·服务器安全之IPSEC:易忽视的防火墙
- ·你的端口随意开,偶就进去共享你的资料
- ·系统被入侵后的恢复
- ·以动态的方式应对安全威胁 内网安全9项措施
- ·mod_sslssl_util_uuencode_binary buffer over
- ·冲击波(MSBlast)蠕虫分析报告
- ·防御局域网攻击 ZT
- ·战术攻防思维撷粹
- ·104种木马手工清除方法
- ·木马清除百种方法
