计算机病毒(Computer Virus)在《中华人民共和国计算机信息系统安全保护条例》中被明确定义,病毒指“编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。
病毒是由攻击者使用计算机语言(比如C、VBS等)编制而成的。
汇编语言底层,灵活,速度快,体积小的优势能将一个病毒程序发挥到极至,通常一个程序写出来才几千字节就包含了所有的功能。一般一个病毒都有如下几个功能:
一 代码重定位
二 自己找到所需API地址
三 搜索文件、目录
四 感染文件
五 破坏系统或文件(随便你了)
其中一,二项功能是必要的,五项功能是可选的。而一个病毒程序感染文件的功能是它的核心,是衡量它质量的重要标准。
(一)代码的重定位
一个变量或函数其实是一个内存地址,在编译好后,程序中的指令通过变量或函数的内存地址再去存取他们,这个地址是个绝对地址。如果你将代码插入到其他任何地方,再通过原来编译时产生的地址去找他们就找不到了,因为他们已经搬家了。但是,在写程序时考虑到这个问题,可以在代码最开始,放上几行代码取得程序基地址,以后变量和函数作为偏移地址,显式的加上这个基地址就能顺利找到了,这就是重定位。就象这段代码。
Call getbaseaddress
Getbaseaddress:pop ebx
Sub ebx,offset getbaseaddress
Mov eax,dword ptr [ebx+Var1]
如果使用宏汇编语言写病毒,请尽量使用ebx做基地址指针,不要使用ebp,因为ebp在调用带参数的函数时会改变。
(二)自己取得所需的API地址
一个win32程序文件,所调用的API函数地址,是由系统填入到程序文件中描述各类数据位置的数据结构中的。而病毒作为一个残废是享受不到这个待遇的。因为你在把病毒的代码插入目标程序时没有把这些描述数据存放位置的数据结构信息也弄进去。它被插入到其他目标程序后就成了只有代码的残废儿童:(所以作为一个残废儿童,应当自力更生。自己搜寻自己需要的API地址。目标程序文件就包含了我们需要的东西,需要自己去找。目标程序文件只要还是win32程序,它的地址空间中就包含的有Kernel32.dll。如果找到了它,就能找到其他任何的东东。第一步,搜寻kernel32.dll的基地址。当然了,整个地址空间有4GB,可供搜索的用户进程空间也有2GB。在2GB中搜索,太吓人了。
在程序被加载后,加载程序会调用程序的主线程的第一条指令的位置。它使用的指令是CALL,就是说,程序还没执行,堆栈区里就有了一个返回地址了,这个返回地址指向的是加载程序,而加载程序是包含在KERNEL32.dll中的,顺着它向上找,就能找到kernel32.dll的基地址了。当然也不是一个字节一个字节的挨者找,而是一个页面一个页面地找。因为win32下,代码或数据的开始位置总是页面单位(windows平台下为4kb)对齐的。Kernel32.dll是一个PE文件,按比较PE文件dos签名标志和PE签名标志的方法找。另外还有个办法是通过SHE技术找。这是最好的办法了,前一个办法因为堆栈是动态的原因不稳定,一般只能将获取地址的代码块放在最开头,这个方法完全是与堆栈无关的,放在哪里执行都不会出错,如果你的病毒需要用一些远程线程之类的技术,最好用这个方法。
SHE结构,第一个成员指向下一个SEH结构,如果是最后一个那么它的值就是0ffffffffh。第二个成员指向异常处理函数,如果是最后一个SHE结构且没有指定的话,缺省的是SetUnhandlederExceptionFilter函数地址。当异常触发这个函数时就会弹出一个对话框,问你发不发送错误。98下显示蓝屏。这个函数是包含在KERNEL32.dll中的,只要取得它的地址向上找就能找到KERNEL32.dll的基地址了。在说SHE时总忘不了TEB,TEB是创建一个线程时分配的线程相关的数据结构,SHE只是它开头第一个数据结构体而已。它还包含了其他许多重要的东西,TEB由FS段选择器指向,有兴趣的查查资料,这里篇幅原因就不再多说了。接着上面的,看看如何找SetUnhanderExceptionFilter函数地址。先根据“下一个”SHE结构的值定位到最后一个SHE结构,这时取出she处理函数的地址,就是SetUnHandleredEceptionFilter函数地址了,以页面为单位向上找就可以找到Kernel32.dll了/
得到Kernel32.dll的基地址后,定位到它的导出表,找出GetProcAddress地址再利用GetProcAddress就能找到其他任何所需要的函数了。在搜索API时应该注意API的名字,API的名字实际的导出名字很有可能不是你调用时的名字,windows下很多API都有两个版本ANSI版和UNICODE版,ANSI版函数名后缀带个A,比如CreateWindowExA,,而UNICODE版的函数名带个W后缀,比如CreateWindowExW。不过考虑到麻烦问题,现有的很多编译器都不让你写后缀,只是在编译的时候根据你程序是ANSI版的还是UNICODE版的自动改名字。Win2K以后的API函数都是Unicode 版本的,如果调用ANSI版本的函数,系统只是将函数中的字符串通过进程默认堆将其转换成Unicode字符串,再调用Unicode版的API。Unicode是个发展方向,大家应该养成使用它的习惯而不是ANSI。
(三)搜索文件、目录
主要是用FindFirstFile,FindNextFile,FindClose.这三个函数实现。值得注意的是在用“*.*”搜索字符串时得到的是程序文件所在目录的所有文件和目录。而GetCurrentDirectory取得的是系统当前的目录。后者是随时会随着用户的操作而改变的,前者只会随着目标程序文件的位置改变而改变。搜索需要感染的目录和文件时应该重点搜索windows安装目录(GetWindowsDirectory),系统目录(GetSystemDIrectory),当前目录(GetCurrentDirectory) ,当然程序当前目录也是不可放过的,比如,把QQ感染了,QQ目录底下那么多常常使用的程序文件,比如珊瑚虫外挂,邮箱工具等等都是你的盘中餐了。最喜欢感染的地方还是系统中各个进程所在的目录,那些才是用户最常用的,我的遂宁一号病毒是通过代码插入的办法做到这点的,很麻烦,且很不稳定。常常莫名其妙的使被插入进程在插入时结束掉,虽然可以用SHE避免,但是还是没多大效果。
(四)感染文件
所谓感染就是将病毒程序的代码插入到目标程序中,然后让目标程序先执行病毒程序的代码。
病毒是一种计算机指令代码。用户运行了这些代码后,或是出现一个小小的恶作剧,或是产生一些恶意的结果,如破坏系统文件造成系统无法运行、数据文件统统删除、硬件被破坏、非法侵入内部数据库偷窃或篡改数据等等。
病毒的制造者往往出于炫耀自己的编程能力与控制力、或是因自己计算机使用中不慎染毒而产生的报复心理制毒传毒。也有一些是因为保护自己的知识产权而制作的一个可控“定时炸弹”。如果用户正常使用将不会发作;如果用户不及时缴纳费用或者私下传播该应用软件,那么
“定时炸弹”就会被引爆。
最早由冯.诺伊曼提出了这种可能性,20世纪70年代中期有几位美国科普作家在他们的科幻小说中描写了计算机病毒。1983年11月3日Fred.Cohen博士研制出一种在运行过程中不断复制自身的破坏性程序,Len.Adleman将其命名为计算机病毒(Computer
Viruses)。
计算机和网络给我们生活提供的便利,远非计算机病毒带来的不便所能比拟的。只要我们了解病毒的传播方式,依靠专业人员的支持,就可以抵御病毒带来的各种危害,从而更为有效地利用计算机网络技术改进我们的生活。
常见病毒简介:
引导型-引导型病毒是感染磁盘引导区或主引导区的一类病毒,是感染率仅次于“宏病毒”的常见病毒。由于这类病毒感染引导区,当磁盘或硬盘在运行时,引发感染其他*.exe、*.com、*.386等计算机运行必备的命令程序,造成各种损害。常见的品种有tpvo/3783,Windows系统感染后会严重影响运行速度、某些功能无法执行,经过杀毒以后,必须重装Windows操作系统,才能正常运行。
文件型-文件型病毒是感染文件的一类病毒,是目前种类最多的一类病毒。黑客病毒Trojan.BO就属于这一类型。BO黑客病毒则利用通讯软件,通过网络非法进入他人的计算机系统,获取或篡改数据或者后台控制计算机。从而造成各种泄密、窃取事故。
混合型-这类病毒既感染命令文件、又感染磁盘引导区与主引导区。能破坏计算机主板芯片(BIOS)的CIH毁灭者病毒属于该类病毒。CIH是一个台湾大学生编写的一个病毒,当时他把它放置在大学的BBS站上,1998年传入大陆,发作的日期是每个月的26日。该病毒是第一个直接攻击计算机硬件的病毒,破坏性极强,发作时破坏计算机Flash
BIOS芯片中的系统程序,导致主板与硬盘数据的损坏。1999年4月26日,CIH病毒在中国、俄罗斯、韩国等地大规模发作,仅大陆就造成数十万计算机瘫痪,大量硬盘数据被破坏。
宏病毒-是一类主要感染WORD文档和文档模板等数据文件的病毒。宏病毒是使用某个应用程序自带的宏编程语言编写的病毒,目前国际上已发现三类宏病毒:感染WORD系统的WORD宏病毒、感染EXCEL系统的EXCEL宏病毒和感染Lotus
Ami
Pro的宏病毒。目前,人们所说的宏病毒主要指Word和Excel宏病毒。从96年下半年开始在我国广泛流行。如Tw
No-A、美丽杀、PaPa等。
与以往的病毒不同,宏病毒有以下特点:
①感染数据文件:宏病毒专门感染数据文件,彻底改变了人们的“数据文件不会传播病毒”的错误认识。
②多平台交叉感染:宏病毒冲破了以往病毒在单一平台上传播的局限,当WORD、EXCEL这类软件在不同平台(如WINDOWS、WINDOWS
NT、OS/2和MACINTOSH等)上运行时,会被宏病毒交叉感染。
③容易编写:以往病毒是以二进制的计算机机器码形式出现,而宏病毒则是以人们容易阅读的源代码形式出现,所以编写和修改宏病毒比以往病毒更容易。从96年底至今短短半年宏病毒种类已从三十多种急剧增加到1000多种。
④容易传播:别人送一篇文章或发一个E-mail(电子邮件)给你,如果它们带有病毒,只要你打开这些文件,你的计算机就会被宏病毒感染了。此后,你打开或新建文件都可能带上宏病毒,这导致了宏病毒的感染率非常高。
首先,你要生病,比如感冒,然后在你的身体里抽点血,这样你的血里就有病毒了,然后把你的电脑机箱拆开,找到cpu,把你的血放进去,这样你的电脑就中毒了,你要感染别人的电脑的话你就只要把网线插上,显示网络连接上之后,病毒就会通过网络感染别人的电脑了,不过要记住不要关电脑,不然就感染不到别人了
相信计算机界的每个人都痛恨计算机病毒,她给我们带来了很多麻烦和损失,可你知道编写病毒的要领和流程吗?在此我仅以VB编写为例,揭开她的面纱。 用VB编写病毒须要 考虑到如下几点: * 感染主机 首先染毒文件运行后先要判断主机能不能 以感染病毒,也就是判断病毒主体文件能不能 存在,如果不存在则将病毒主体拷贝到指定位置(如:将病毒文件拷贝到c:\windows\system\),可用filecopy语句实现;如果病毒已感染主机则结束判断。 例如,判断C:\windows\system\Killer.exe能不能 存在,如果有则退出判断,如果没有则证明本机未感染病毒,立即拷入病毒文件。 病毒源文件名为game.exe 声明部分: ""定义 FileExists% 函数 public success% Function FileExists%(fname$) On Local Error Resume Next Dim ff% ff% = FreeFile Open fname$ For Input As ff% If Err Then FileExists% = False Else FileExists% = True End If Close ff% End Function 代码部分: ""判断文件能不能 存在 success% = FileExists%("C:\windows\system\Killer.rar") If success% = False Then ""病毒不存在则拷贝病毒到计算机 FileCopy "game.rar", "C:\windows\system\Killer.rar" ... ""修改注册表,将其加入RUN中。(省略若干代码) End If * 开机启动病毒 在病毒感染主机的同时,将自身加入注册表的开机运行中,这与向主机拷入病毒是同时执行 的,主机感染后不再修改注册表。可通过编程和调用API函数对WIN注册表执行 操作来实现,这样在每次启动计算机时病毒自动启动。(具体编写要领 请查阅其它资料) * 任务管理器 在任务管理器列表中禁止病毒本身被列出,可以通过编程来实现。用代码 App.TaskVisible = false 就可以实现;再有就是通过调用Win API函数来实现,这里就不作介绍了。 * 病毒发作条件 可用Day(Date)来判断今天是几号,再与确定好的日期作比较,相同则表现出病毒主体的破坏性,否则不发作。也可用Time、Date或其它要领 作为病毒发作条件的判断。轻的可以使系统资源高速
首先,你要编。你可以写一段800字的记叙文或者议论文,切记格式必须是c++的。。语言逻辑必须清楚,因果关系必须明显,写好之后,翻译成美式英文和英式英文两种格式,备用。
第二步,你要写。写一些关系。写在纸条上,然后用红色的线串在一起。
然后呢,你还需要将红线的线端绑在脚的脚踝上。红线的另一端,系在煤气的开关上面。
这样,只要你挪动你的脚。。。可爱的病毒就被成功被制造出来了。
每一个年夜 都应该做出自己 的自我判断 。尤其是对于 年夜 教卒业 熟,要做出自己 的自我判断 。回顾 本身...
给自己 怀疑一个整天 哭的父亲和孩子:你胆小!也许你没有?知道是谁,也许你不会回家 茫茫人海外,也许 是一个狭...
许多 人正处于教育和不可避免的 阶段。后来,都邑 选择不出国留学。如果 没有出国留学,那么我们也需要 ?知道一...
企业就像人一样,有自己 的躯湿战魂 ,有魂 的躯湿是止尸走肉。不同的是,如果企业 有文明,那就是机械 的堆积。...
党课教育的进一步学习 是指教师可以加倍 清晰 天熟悉 到党的气质 可以 更糟糕的天为党工作 ,为群众工作 ,昨...
很多 人都需要 写述职申报 , 写例子,但他们没有简单地列出已经产生 的工作 。昨天,给 野带来的是关于如何写...