在最新发布的Win XP SP2中,采用了“数据执行保护”(DEP)技术 。这是一种基于处理器支持的内存页面保护技术,它将更为严格地控制用户访问的权限,它禁止在标记为数据存储的内存区域中执行代码 。当某些程序或病毒尝试运行标记的数据页中的代码时,就会立即发生异常并禁止执行代码 。这可以防止攻击者使用代码致使数据缓冲区溢出,然后执行该代码 。
2、驻留病毒
驻留病毒是指那些在内存中寻找合适的页面并将病毒自身拷贝到其中且在系统运行期间能够始终保持病毒代码的存在 。驻留病毒比那些直接感染(Direct-Action)型病毒更具隐蔽性,它通常要截获某些系统操作来达到感染传播的目的 。进入核心态的病毒,可以利用系统服务来达到此目的 。如CIH病毒,就通过调用一个由VMM导出的服务VMMCALL _PageAllocate在大于0XC0000000的地址上分配一块页面空间 。而处于用户态的程序要想在程序退出后仍驻留代码的部分于内存中似乎是不可能的,因为无论用户程序分配何种内存都将作为进程占用资源的一部分,一旦进程结束,所占资源将立即被释放 。所以我们要做的是分配一块进程退出后仍可保持的内存 。
【杀毒软件是如何工作的?电脑杀毒的几种方式介绍】另外,还可以通过修改系统动态连接模块(DLL)来进行驻留 。Win 9X下系统DLL(如Kernel32.dll 映射至BFF70000)处于系统共享区域(2G-3G),如果在其代码段空隙中写入一小段病毒代码则可以影响其它所有进程 。但Kernel32.dll 的代码段在用户态是只读的 。所以,必须通过特殊手段修改其页保护属性 。在Win NT/2000/XP系统里,DLL所在的页面被映射到进程的私有空间(如Kernel32.dll映射至77ED0000)中时,具有写时拷贝属性,即没有进程试图写入该页面时,所有进程将共享这个页面;而当一个进程试图写入该页面时,系统的页面错误处理代码将检查到该异常进程,并给它分配一个新页面,并拷贝原页面内容于其上,且更新进程的页表以指向新分配的页 。这种共享内存的优化给病毒的写作带来了一定的麻烦,病毒不能象在Win 9X下那样仅仅修改Kernel32.dll一处代码便一劳永逸 。它需要利用WriteProcessMemory,向每个进程映射Kernel32.dll的地址写入病毒代码,这样每个进程都会得到病毒体的一个副本,这被称为多进程驻留或每进程驻留(Muti-Process Residence or Per-Process Residence) 。
在如今的病毒设计中,那些传统的挂钩――捆绑方法并不很受欢迎,原因在于新的操作系统里,许多函数规则是不可预知的 。所谓的”黑箱“设计,使得设计人员更偏爱系统级别的线程捆绑,或更直接的接管权限控制的方法 。采用最复杂的线程捆绑技术,甚至可以使杀毒软件和防火墙得不到足够的信息来区分一个程序是否合法 。更高级别的抢夺权方法,甚至可以结束所有杀毒软件的进程,包括卡巴斯基所采用的受保护的内存线程技术 。
普通病毒是通过将自身附加到宿主尾部(如此一来,宿主的大小就会增加),并修改程序入口点来使病毒得到击活 。但现在不少病毒通过使用特殊的感染技巧,能够使宿主大小及宿主文件头上的入口点保持不变 。附加了病毒代码,却使被感染文件大小不变听起来让人不可思议 。其实,它利用了PE文件格式的特点:PE文件的每个节之间留有按簇大小对齐后的空洞,病毒体如果足够小,则可以将自身分成几份并分别插入到每个节最后的空隙中,这样就不必额外增加一个节,因而文件大小可以保持不变 。著名的CIH病毒,正是运用这一技术的典型范例(它的大小只有1K左右) 。
病毒在不修改文件头入口点的前提下,要想获得控制权并非易事:入口点不变,意味着程序是从原程序的入口代码处开始执行的,病毒必须要将原程序代码中的一处修改为导向病毒入口的跳转指令 。一些查毒工具通过扫描可执行文件头部的入口点域,如果发现它指向的地方不正常,即不在代码节而在资源节或重定位节中,则有怀疑文件感染了某种病毒 。而病毒界中的EPO(入口点模糊)技术,则可以很好的对付这样的扫描,同时它还是反虚拟执行的重要手段 。
推荐阅读
- 千窟城被毁主力是谁
- 经典说说句子每一句都值得珍藏
- 碧蓝航线格罗斯特建造时间 碧蓝航线格罗斯特属性技能一览
- win10更新失败屏幕不亮进不了系统解决方法
- 豆腐和金针菇可以一起吃吗
- JavaScript对搜索引擎优化的影响和解决方案
- 碧蓝航线黛朵建造时间 SSR皇家轻巡黛朵属性技能一览
- 问道手游八仙曹国舅怎么过
- 碧蓝航线朴是谁 碧蓝航线重樱驱逐浦波原型介绍