当前位置:懂科普 >

综合知识

> 病毒感染简写怎么写

病毒感染简写怎么写

1.什么叫病毒感染

病毒感染是个极其复杂的过程,感染方式多样,结果各异,病毒属于亚细胞结构,只有属于自己的核酸及其他一些必需的最简结构。

病毒感染简写怎么写

病毒的感染可分为增殖性感染和非增殖性感染两种类型。

增殖性感染:发生在病毒能在其内完成复制循环的允许细胞内,并以有感染性病毒子代产生为特征

非增殖性感染:由于病毒或是细胞的原因,致使病毒的复制在病毒进入敏感细胞后的某一阶段受阻,结果导致病毒感染的不完全循环。有三种类型:流产感染、限制型感染、潜伏感染。

从机体水平来说,病毒感染就是外源基因对被侵染体的侵略,结果是病毒基因取代宿主基因,宿主死亡(SARS病毒,致病性禽流感病毒都属于这类),病毒被宿主免疫系统消灭(常见的病毒性感冒),或病毒整合于宿主基因(对于单细胞生物或简单的多细胞生物来说相当于产生了一个新的物种)或潜伏于宿主细胞内发挥其作用(癌症的一个重要原因)

从细胞水平来说,被病毒感染的细胞都要面临着死亡或“变态”。一些细胞被病毒侵入后,病毒分解和利用其内部的各种物质来完成子代病毒的复制,最终导致细胞死亡解体;另一些病毒侵入细胞后,不直接分解细胞,而是产生了其他的生物学效应使细胞形态变化,如果机体的免疫系统能够识别这种变化,细胞将会自行被机体杀死(细胞凋亡),如果不能识别,则很有可能产生癌变等严重后果,hiv病毒能直接破坏人的免疫系统。

从分子水平说,病毒自身并不进行生产,他只是利用宿主细胞的各种分子和能量来完成他们自身携带基因所赋予他们的生命周期。

所以,总的说来,病毒是一种最纯粹的生物,他对于我们理解物种的产生和基因的演变是很有用的。

病毒是一种比细菌小的可以导致感染的微生物,当它对人体细胞进行侵犯时,也就是病毒感染了.病毒通常在接触人体时,人体的表皮和黏膜等防御机制无法抵挡住时,病毒也就开始感染人体了.病毒分了很多种,会导致不同的疾病,象引起感冒的病毒,通常过了一个周期大概1周的样子,也就消失了,如果不是因为机体抵抗力不够而引起继发性细菌感染,感冒自己也就好了.而象肝炎病毒,则会长期和机体之间战斗,如果机体赢了,那肝炎病毒就处于静止期,如果输了,那就会导致出现明显症状的肝炎,这时候就需要抗病毒治疗了.针对不同的病毒,用不同的药

2.怎样编写病毒

1.1病毒程序VIRUS.C

这是一个用C语言写的病毒程序,当激发病毒程序时显示时间,然后返回。病毒程序VIRUS.C可将病毒传染给一个C语言程序。当被病毒感染的程序经编译、连接和执行后,又可以将病毒部分传染给其他的C语言源程序。每执行一次带有病毒的C语言程序,就向C语言源程序传播一次病毒。此程序的设计思路如下:

当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上找扩展名为C的匹配文件,如果找到,查找是否有被传染过的标志“INFECTED”。如果有此标志,继续找其它的C文件,直至全部检查一遍。若没有这个标志,则

(1)在未被感染的C程序头部加入“INFECTED”已被传染标志。

(2)读取病毒文件的头文件,将其插入到即将被感染的文件头部。如果发现有重复则不插入。

(3)在主程序中插入“VIRUSES();”调用VIRUSES函数。寻找printf、for、while、break语句,如果找到就在之前插入。

(4)在文件尾部插入VIRUSES_SUB子程序。

(5)在插入到将感染文件里面的VIRUSES_SUB子程序里面,必须把文件名改为当前自身的文件名,否则被传染后的文件经过编译、连接和运行后不能再继续传染。

(6)最后插入VIRUSES子程序。这个子程序里面调用了VIRUSES_SUB,执行到这里返回执行结果信息。

其中用到4个出错的返回值,分别是:

1:用户文件太大,不传染;

2:带病毒文件打不开,不传染;

3:带病毒文件读取不成功,不传染;

4:查找第一个匹配文件不成功。

如果返回值是0代表文件传染成功。

具体实现过程如下:

其中用到的函数和结构体用法参考3.3节。

首先导入病毒子程序要用到的三个库文件,分别是dir.h, stido.h, dos.h.在主函数里面只调用VIRUSES函数。紧跟定义VIRUSES函数里面要调用的VIURS_SUB函数。里面定义了若干个变量。ffblk用来保存查找到的匹配文件的信息,用到里面的ff_name变量来保存匹配文件名。

然后定义保存未感染的文件和病毒文件的文件型指针变量,分别用是*virus_r和*virus_v.读取文件的缓冲区,放到二维数组a[500][80]里面临时存放。因为此程序对大于500行的C文件不进行传染,所以完全可以放到里面。首先用getdate函数获取系统当前日期并输出。接着用findfirst函数查找扩展名为C的文件,将其信息保存到ffblk里面。用fgets函数读文件的第一行,长度是80-1个字符。然后用strstr函数检测病毒的标志,看文件是否有INFECT这个标志。

如果有,表示文件已经被传染,关闭文件,不进行传染。当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上查找*.C的匹配文件,一旦找到,查找“已被传染过”的标志INFECTED。若有此标志,继续找其它*.C文件,直至全部检查一遍。

如果没有这个标志,将文件全部读入a[500][80],如果发现文件超过500行,不传染,返回。将文件指针指向文件头,打开带病毒的文件。如果打不开,返回。

然后读取带病毒文件的前4行,也就是病毒子程序要用到的头文件,写入将被传染的文件。若不能读取带病毒文件,返回。用n_line变量控制行数,把将被传染文件的源程序写回原文件。其中要进行处理不写入病毒文件已有的包含语句,也就是说使#Include语句不重复。

这点是这样实现的:定义一个字符数组char include_h[]=; strstr函数查看将被传染文件的头文件是否和*include_h[]相同,如果相同,。

3.病毒是怎么写出来的

汇编语言底层,灵活,速度快,体积小的优势能将一个病毒程序发挥到极至,通常一个程序写出来才几千字节就包含了所有的功能。

一般一个病毒都有如下几个功能:一 代码重定位 二 自己找到所需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结构且没有指定的话,缺省的是函数地址。当异常触发这个函数时就会弹出一个对话框,问你发不发送错误。

98下显示蓝屏。这个函数是包含在KERNEL32.dll中的,只要取得它的地址向上找就能找到KERNEL32.dll的基地址了。

在说SHE时总忘不了TEB,TEB是创建一个线程时分配的线程相关的数据结构,SHE只是它开头第一个数据结构体而已。它还包含了其他许多重要的东西,TEB由FS段选择器指向,有兴趣的查查资料,这里篇幅原因就不再多说了。

接着上面的,看看如何找函数地址。先根据“下一个”SHE结构的值定位到最后一个SHE结构,这时取出she处理函数的地址,就是函数地址了,以页面为单位向上找就可以找到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取得的是系统当前的目录。后者是随时会随着用户的操作而改变的,前者只会随着目标程序文件的位置改变而改。

4.病毒感染的类型

有两种,多数为隐性感染(亚临床感染),少数则bai发生显性感染。显性感染可分急性感染和持续性感染两型急性感染:发病急,进du展快,病程一般为数日至数周。除少数在急性期死亡及发生后遗症者外,多数病例最终以组织器官中病毒被清除而痊愈。

持续zhi性感染:病毒长期存在于寄主体内,可达数月至数年,造成慢性持续性感染,又可分以下3型:①潜伏性感染。当病毒与人体免疫力dao处于相对平衡状态时,病毒可长期潜伏在人体组织内,不引起症状。一旦人体免疫力降低,病毒可重新繁殖而引起症状。例如单纯疱疹病毒、EB病毒和水痘-带状疱疹病毒引起的潜伏性专感染。②慢性感染。病毒长期存在人体组织器官中,造成慢性持续性病变,如乙型肝炎病毒引起的属慢性乙型肝炎。③慢病毒感染。潜伏期长,可达数年,病变逐渐发展,最后导致死亡。

5.如何计算病毒的感染复数MOI

其公式为:P = 1- P(0) ,P(0) = e-m 或m = -InP(0)。

一般认为MOI是一个比值,没有单位,其实其隐含的单位是pfu number/cell。后来MOI被普遍用于病毒感染细胞的研究中,含义是感染时病毒与细胞数量的比值。

然而,由于病毒的数量单位有不同的表示方式,从而使MOI产生了不同的含义。能产生细胞裂解效应的病毒例如单纯疱疹病毒等习惯上仍用pfu表示病毒数量,因此其MOI的含义与传统的概念相同。

传统意义上的MOI的测定,其原理是基于病毒感染细胞是一种随机事件,遵循Poisson分布规律,可计算出感染一定比例的培养细胞所需的感染复数(MOI)。

扩展资料:

感染的多样性,复数感染。传统的MOI概念起源于噬菌体感染细菌的研究。它表示噬菌体数量与感染期间细菌数量的比率,即每个感染细菌的平均噬菌体数量。

实际上,隐含单位是PFU编号/单元格后来,MOI被广泛用于病毒感染细胞的研究,这意味着感染时病毒与细胞数量的比例。

噬菌体的数量单位是pfu。通常认为MOI是比率且没有单位。

参考资料来源:百度百科——感染复数

标签: 病毒感染 简写
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/zonghezhishi/xqm4mx.html