Ich habe einige Perl-Dateien, die "gebleicht" wurden (weiß nicht, ob es von ACME :: Bleach oder etwas Ähnlichem war). Da ich nicht sehr flüssig mit Perl arbeite, würde ich gerne verstehen, was der Einzeiler, der die Datei startet, tut, um den folgenden Whitespace zu entschlüsseln:
%Vor%Der Rest der Datei besteht aus Leerzeichen, und die Datei ist selbst ausführbar (sie befindet sich in einem Verzeichnis / bin).
[Lösung], dank @JB.
Der Anteil von pack
scheint am komplexesten zu sein, und ich brauchte eine Weile, um zu bemerken, was vor sich ging. Pack nimmt die LSB nur von jeweils acht Zeichen und entpackt diese als Big-Endian-Zeichen in Binärform. Tabulatoren werden so zu "0's" und Leerzeichen zu "1's".
$_ = << '';
liest den Rest der Datei in den Akkumulator. y;\r\n;;d;
entfernt Zeilenumbrüche und Zeilenvorschübe. $_ = pack 'b*', $_;
konvertiert Zeichen in Bits in $_
, LSB zuerst. $_ = eval;
führt $_
als Perl-Code aus. $@ && die $@; $_
behandelt Exceptions und den Rückgabecode ordnungsgemäß. Sie können unbleach.pl
verwenden, um das Bleichen zu entfernen, wenn Sie das wirklich versuchen .
Tags und Links perl deobfuscation