这里只说说类似 logo 这类的恶性病毒 ( 以下简称病毒 ) 是如何感染可执行文件的 ( 扩展名是 .exe 的 ) 。
病毒通过各种方式运行之后,首先会对操作系统进行判断,搞清楚什么操作系统,然后,会执行一些特定的隐藏工作,并添加到系统注册表中可以让自己再次运行的位置。这些初始化工作做完之后,如果病毒没有别的任务。就开始感染文件了。
首先,病毒会枚举当前正在运行的程序的路径,例如当你在使用千千静听听歌的时候,病毒就会枚举到千千静听 .exe
程序路径,如下图:
![]()
通常病毒可以枚举到当前正在运行的所有程序的可执行文件的路径,但除了一些作过特殊处理的程序,例如下图中的卡巴斯基的进程 kav.exe
,病毒就无法枚举到:
![]()
一旦病毒获得了可执行文件的路径,就会打开这个可执行文件(如果能打开的话,通称可执行文件都是采用镜像方式读入内存的,所以一般都能打开),然后把自己的代码写道合适的位置。
对于那些当前没有运行的程序,病毒就没有办法知道其可执行文件的路径了。这时候,病毒会采取枚举目录的办法来寻找可执行文件。例如,病毒要感染
d 盘中的游戏的可执行文件,病毒首先询问操作系统, “ 告诉我, d 盘更目录都有什么文件和文件夹?把这些信息写道纸条上给我! ”
操作系统很听话,就会如实把这些信息 “ 写道纸条上 ” 告诉病毒。病毒拿到 d
盘更目之后,就会按照上面列出的名字,挨个让操作系统带路,比如有一个叫做传奇的目录,病毒就会让操作系统带路, “
带我到传奇目录里面去! ” ,操作系统就会带病毒进入传奇的目录中去,进去之后,病毒会接着问 “ 可执行文件都是那些? ”
,操作系统会返回 “ 传奇 ” 目录中的所有可执行文件的名字给病毒,病毒知道了可执行文件的路径后,就会感染这些文件。
病毒会让操作系统带他进入 d 盘所有的目录中去一编,试图感染所有的可执行文件,来完成传播自身的目的。
由此我们可以知道,要避免可执行文件被感染,那么必须做到:
在内存中不要让病毒获得自身可执行文件的路径,例如上图中的 kav.exe
进程。方法是,处理系统枚举进程的函数,就是取得系统的最高层管理权限,这就是杀毒软件有时候会造成系统崩溃的原因之一。
在病毒枚举磁盘的过程中,不让其枚举到。这在 windows nt 系统中都是可以很容易做到的,那就是利用
ntfs 文件系统的的权限特性。关于 ntfs 权限的应用,本人在另外一篇帖子中已经提过了,请大家在网盟搜索 “hdswx”
写的文章即可。
大家有什么不同的理解的,欢迎到天下 · 网吧联盟论坛技术版讨论:
bbs.txwm.com 。
showIsAuthorship('1');
【本站声明】本站刊载的部分内容全部来源互联网,对于此类文章本站仅提供交流平台,不为其版权负责。如涉及侵犯您的知识产权的文章,请联系我们,我们将尽快做出更正。并向您表示感谢!同时特别感谢对本站所有支持的网友。