Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I spent some time this year trying out various Java obfuscators, and I found one to be miles ahead of the rest: <a href="http://www.sable.mcgill.ca/JBCO/" rel="noreferrer">JBCO</a>. It's unfortunately a bit cumbersome to set up, and has no GUI, but in terms of the level of obfuscation it produces, it is unparalleled. You try feeding it a simple loop, and if your decompiler doesn't crash trying to load it, you will see something like this:</p> <pre><code> if(i &lt; ll1) goto _L6; else goto _L5 _L5: char ac[] = run(stop(lI1l)); l7 = (long)ac.length &lt;&lt; 32 &amp; 0xffffffff00000000L ^ l7 &amp; 0xffffffffL; if((int)((l7 &amp; 0xffffffff00000000L) &gt;&gt; 32) != $5$) { l = (long)III &lt;&lt; 50 &amp; 0x4000000000000L ^ l &amp; 0xfffbffffffffffffL; } else { for(l3 = (long)III &amp; 0xffffffffL ^ l3 &amp; 0xffffffff00000000L; (int)(l3 &amp; 0xffffffffL) &lt; ll1; l3 = (long)(S$$ + (int)(l3 &amp; 0xffffffffL)) ^ l3 &amp; 0xffffffff00000000L) { for(int j = III; j &lt; ll1; j++) { l2 = (long)actionevent[j][(int)(l3 &amp; 0xffffffffL)] &amp; 65535L ^ l2 &amp; 0xffffffffffff0000L; l6 = (long)(j &lt;&lt; -351) &amp; 0xffffffffL ^ l6 &amp; 0xffffffff00000000L; l1 = (long)((int)(l6 &amp; 0xffffffffL) + j) &amp; 0xffffffffL ^ l1 &amp; 0xffffffff00000000L; l = (long)((int)(l1 &amp; 0xffffffffL) + (int)(l3 &amp; 0xffffffffL)) &lt;&lt; 16 &amp; 0xffffffff0000L ^ l &amp; 0xffff00000000ffffL; l = (long)ac[(int)((l &amp; 0xffffffff0000L) &gt;&gt; 16)] &amp; 65535L ^ l &amp; 0xffffffffffff0000L; if((char)(int)(l2 &amp; 65535L) != (char)(int)(l &amp; 65535L)) { l = (long)III &lt;&lt; 50 &amp; 0x4000000000000L ^ l &amp; 0xfffbffffffffffffL; } } } } </code></pre> <p>You didn't know Java had goto's? Well, the JVM supports them =)</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload