Es ist zwar unstrukturiert und verschlüsselt, dürfte sich aber
recht leicht wieder entschlüsselnm lassen.
Wie wuerdest Du es entschluesseln bzw. wie anfangen?
Zunächst strukturieren. Der Code beginnt mit einer Reihe von Variablendeklarationen, diese kannst du zunächst vom ausführbaren Code trennen und anschliessend in diesem Teil alle ; (Semikolons) durch ; ersetzen:
var _b1I;
var _y0Q;
var _x3B=window;
var _w2C=document;
var _g4R=navigator;…
Im Code selbst kannst du zunächst alle Befehlsgruppen, also schliessenden Klammerpaare {} suchen und entspr. strukturieren, anschl. wieder die einzelnen Befehl am ; trennen. Dabei darauf aufpassen, dass du in „“ gesetzte {}; nicht ersetzt.
Dummerweise sieht man schnell, dass man auf diese Weise nicht sonderlich weit kommt, da fast der gesamte ausführbare Code in Variablen deklariert wurde. Am Ende des Programmes aber findet sich die wichtigste (von mehreren) Decodierungsfunktion:
function \_dC(s){
var i;
var r="";
var l=s.length-1;
var k=s.substr(l,1);
for (i=0;i
Dies ist nicht die Funktion, mit der das Programm startet; wie gesagt, habe ich im Moment keine Lust, selbst zu decodieren. Wenn du aber den gesamten Text zunächst wie o. a. strukturiert hast, am besten noch auf Endlospapier ausgedruckt, solltest du den Startpunkt schnell finden können.
Jetzt wird's aber etwas aufwändiger: Üblicherweise sind derart verschlüsselte Programme rekursiv codiert. D. h., wenn du die Startfunktion (auf den ersten Blick scheint's die **\_t0P()** zu sein) gefunden und einmal hast durchlaufen lassen, ist deren Ausgabe wieder ein genau so unstrukturierter Text wie der ursprüngliche, nur um ein paar Zeilen kürzer. Du hast also keine Chance, im Programm einfach Breakpoints zu setzen. Du musst die Ausgabe der Startfunktion also wieder strukturieren und die neue Startfunktion finden.
Das kann so mehrere Ebenen tief hinabgehen, dann hast du endlich die eigentliche Schadfunktion vor dir. Der intellektuelle Aufwand ist gering, es ist halt eine ziemliche Fleissarbeit. Die eigentliche Decodierungsarbeit nimmt das Programm dir ab, du musst nur die jeweilige Startfunktion minimal anpassen, da du deren Ausgabe abfangen und das Programm unmittelbar anschliessend terminieren musst.
Von einer echten Verschlüsselung kann hier also kein Rede sein, richtiger wäre es, von einer Verschleierung zu sprechen. Du musst halt einen Schleier nach dem anderen vom Gesicht dieses kleinen IE-Killers herabziehen, um seine hässliche Fratze Aug' in Aug' bewundern zu können.
Gruss
Schorsch