中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 毛毛虫病毒分析 上一主题 | 下一主题
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『楼 主』:  毛毛虫病毒分析

毛毛虫病毒的引导部分: 判断c:command.com最后两个字节是否为0C0AH,不是,就传染。 然后把病毒引导到内存最高端,占2KB空间 修改21H中断,截获DOS功能调用的1AH,11H,12H。 毛毛虫病毒的传染部分: 占据原com文件前0CH个字节,修改CS和IP值,使程序转到病毒程序,原来的0CH个字节被转移到文件尾部病毒程序中位移量为0BH的位置,当染上病毒的com文件运行时,首先将病毒驻留内存,然后将0CH字节移回,执行原com文件。修改int21H入口,改在XXXX:04A8H处。 毛毛虫病毒的表现部分: 修改int 1CH的入口,改在XXXX:06B0H处。 毛毛虫病毒的图形代码: 在XXXX:069AH处有 20 07 0F 0A 0F 0A 0F 0A 0F 0A 0F 0A 0F 0A 0F 0A 0F 0A F7 0E EE 0C 虫身为8个0FH符号连接而成,属性为0AH,即为绿色 虫颈为1个F7H符号组成,属性为0EH,为黄色 虫嘴为1个EEH符号组成 ,属性为0CH,为红色 把ES设定在B800H处,不断变换DI值,调用int1CH. 在Debug状态下激活毛毛虫病毒: mov ax,yyyy mov ds,ax mov dx,6b0 mov ax,251c int 21h




ko20010214 ================================= 大功告成,打个Kiss! ko20010214@MSN.com 神州优雅Q300C Intel CeleronM 370处理器 | 256MbDDR内存 40G硬盘 | USB2.0 | IEEE 1394 13.3 ' WXGA 宽屏(16:10) | COMBO光驱 10/100M网卡 | 四合一读卡器
2002-10-21 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复
kickout
高级用户




积分 667
发帖 135
注册 2002-10-25
状态 离线
『第 2 楼』:  

下面是我在98年写的一个小程序,模仿毛毛虫病毒发作的现象,有兴趣可以粘贴下去用masm或tasm编辑成EXE文件运行一下看。 ============================== dseg segment data1 db " The MaoMaoChong is Coming Back ! !! !!!",0ah,0dh db " ------Writen By Y.L.N 04/18/98 ",0ah,0dh db " GOOD LUCK For YOU ! !! !!!",0AH,0DH,"$" data2 db 0Fh, 0Ah, 0Fh, 0Ah,0Fh, 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, F7h, 0Eh, EEh, 0Ch,0ah,0dh,'$' cury db 00 ;hang curx db 00 ;lie dseg ends stack segment stack sta dw 100 dup(?) stack ends code segment assume cs:code,ds:dseg,es:dseg main proc start: push ds xor ax,ax push ax mov ax,dseg mov ds,ax mov es,ax mov ah,02h ;set cursor mov dh,cury mov dl,curx int 10h mov dx,offset data1 ;print string mov ah,09h int 21h mov dh,03h ;reset cursor mov dl,00h mov cury,dh mov curx,dl loop1: inc dl mov curx,dl cmp dl,69 jng old cmp dl,79 jng repeat mov dl,00 mov curx,dl inc dh mov cury,dh cmp dh,23 jng old mov dh,03h mov cury,dh jmp eed old: xor ax,ax ;draw MaoMAoChong mov ax,offset data2 mov bp,ax mov ah,13h mov al,10b mov bh,0 mov cx,0ah int 10h mov cx,077fh ;delay delay1: push cx mov cx,0bfh delay11: loop delay11 pop cx loop delay1 repeat: mov dl,curx add dl,+11 mov ah,02h ;set cursor mov dh,cury int 10h xor ax,ax mov ah,08h ;push a chart mov bh,00h int 10h mov dl,curx mov ah,02h ;set cursor mov dh,cury int 10h mov ah,0eh ;clear MaoMaoChong's tial mov bl,00000101b mov cx,1 int 10h mov cx ,077fh ;delay delay2: push cx mov cx,0bfh delay21: loop delay21 pop cx loop delay2 jmp loop1 ;loop until the world is coming to end eed: mov ah,00 ;show a page and exit int 21h main endp code ends end start =========================== 可能delay的那一段要改一下,因为我原来是在486,顶多586的机器上编辑的。现在CPU速度快,要把delay里的循环数加大,虫子才不会跑得太快,呵呵。。。 data2 后面的8个0Fh,0Ah,本来可以简单地写成 db 08h DUP(' '),这里的' '里看起来是空白的,实际是在DOS下用ALT键+015(小键盘),ALT键+010(小键盘)敲进去的字符。因为这样看起来象是空白的,所以还是用比较土的办法输入,不用这种简写法。 我喜欢DOS有很大一点就是可以在DOS下编程对屏幕进行精确地控制,很好玩。呵呵。。。 希望这样的有趣的小程序能激起大家对DOS的一些些兴趣。




================================= kickout 大功告成,打个Kiss!
2002-10-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: