Voidmaker

Obfuscate JavaScript with Hangul Fillers, Zero Width glyphs, and Variation Selectors.

HTML

<div style="float:right;">see also<br><a href="http://aem1k.com/void/">aem1k.com/void/</a><br><a href="http://aem1k.com/aurebesh.js/">aem1k.com/aurebesh.js</a></div>
Obfuscate JavaScript with Hangul Fillers and Variation Selectors.<br>

<input type="button" value="void" onclick="avoid()">
<br>

<input type="radio" name="void" id="invs" onclick="avoid()" checked="checked"><label for="invs" title="magic [ASCII only]">inVSible</label>
<span class="subop">
<input type="checkbox" id="invswrap" onclick="avoid()" checked="checked"><label for="invswrap" title="wrap in eval()">wrap</label>
<input type="checkbox" id="invslow" onclick="avoid()"><label for="invslow" title="use BMP variation selectors 1-16">low</label>
</span>
<br>
<input type="radio" name="void" id="void" onclick="avoid()"><label for="void" title="more magic">aurebeshvoid</label>

<textarea id="in" style="" spellcheck="false" onkeyup="avoid();">
alert('test`\'"' + "test`'\"" + `test\`'"` + '\\\\' + '💩');
document.body.innerHTML = '&lt;div style="font-size:999%;color:red;">boo&lt;/font>'
</textarea>
<textarea id="out" spellcheck="false"></textarea>

CSS

.subop {font-size:90%;}
textarea {width:95%;height:10em;display:block;}

JavaScript

function avoid(type) {
  var inn = document.getElementById('in').value;
  var out = document.getElementById('out');
  var txt = '';
  if(inn == '') return out.value = ''

  if(document.getElementById('invs').checked) {
    inn = inn.replace(/[^\x00-\x7f]/g,'');
    if(document.getElementById('invslow').checked) { //less verbose, but more obvious as to what it does
      for(var j=0;j<inn.length;j++) txt += character(inn.charCodeAt(j)/16|0 + 0xFE00) + character(inn.charCodeAt(j)%16 + 0xFE00)
      if(document.getElementById('invswrap').checked) txt = "eval(unescape(escape('" + txt + "').replace(/u...(.).{5}/g,'$1')))";
    } else {
      for(var j=0;j<inn.length;j++) txt += character(inn.charCodeAt(j) + 0xE0100)
      if(document.getElementById('invswrap').checked) txt = "eval(unescape(escape('" + txt + "').replace(/u.{8}/g,'')))";
    }
  } else if(document.getElementById('void').checked) { //more obfuscated
    inn = encodeURIComponent(inn).replace(/\x22/g,'%22').replace(/\x27/g,'%27').replace(/\x5C/g,'%5C').replace(/\x60/g,'%60');
    inn = 'eval(decodeURIComponent(\\"' + inn + '\\"))';
    inn = inn.split('').map(function(c) {return character(c.charCodeAt(0) + 0xE0100);}).join('');
    //inn = '/A221/[A221=\x22\x22],C211=\x27\x22\x27,B=A221==A221,A12=A221==C211,B22=B+A221,A212=A12+A221,B21=+A221,A222=+B;B211={},C221=A222+A222,B221=C221+A222,C212=C221+B221,B211=A221+B211,A2=B22.A212+B211,A2=A2[A222],B=B22[B21],A1=B22[A222],C12=B211[C212],A=B22[C221],C1=B211[A222],C=A212[B221],B12=B22[B221],A21=A212[A222],A22=\x22\\\\)(\x22,C22=A22[B21],C2=A22[C221],B2=A22[A222],B212=A1+B12+B+A+A1+A2+\x22 \x22,A211=C12+C1+A2+C+B+A1+A+C12+B+C1+A1,C21=A211[A211][A211],C21(C21(B212+C211+C21(B212+C21(B212+C211+A+A2+B12+C+C12+A21+(B1=C22+A222+(B221+B221)+B21)+B12+C2+B12+C+C12+A21+B1+B12+C2+\x22\x27' + inn +...