L'offuscamento in Javascript viene solitamente generato generando il codice in modo dinamico. Mentre si trovano esempi precedenti che fanno ampio uso di chr(..)
o base64 o di molte stringhe, l'euristica del rilevamento delle concatenazioni di stringhe è stata migliorata per contrassegnare questo tipo di codice come potenzialmente dannoso in modo che l'attaccante abbia migliorato i propri metodi. Tipici esempi attuali come questo sono non facilmente distinguibile dal codice non dannoso.
I metodi utilizzati nel codice dannoso per decodificare l'offuscamento sono gli stessi metodi utilizzati pesantemente nel codice non dannoso, ovvero innerHTML
, document.write
ecc. Inoltre, Javascript offre molti modi diversi per chiamare funzioni come eval
, tra questi costruisce il nome della funzione da una stringa prima di chiamarla.
In sintesi: non ci sono caratteri e affermazioni tipiche del JavaScript offuscato moderno ma che non si trovano da nessun'altra parte. Soprattutto se si guarda l'output dei minifiers che vengono spesso usati per risparmiare larghezza di banda e migliorare i tempi di caricamento, si troveranno più somiglianze tra il codice minified e offuscato rispetto al codice minified e "normal".