js代码混淆[jjencode/jjdecode]

jjencode/jjdecode是Yosuke HASEGAWA的作品,将JS代码转换成只有符号的字符串,此人还有作品aaencode/aadecode,可以将JS代码转换成常用的网络表情,具体请访问作者个人站点。

jjencode代码如下:

ContractedBlock.gif ExpandedBlockStart.gif jjencode.js
function jjencode( gv, text ) {
var r="";
var n;
var t;
var b=[ "___", "__$", "_$_", "_$$", "$__", "$_$", "$$_", "$$$", "$___", "$__$", "$_$_", "$_$$", "$$__", "$$_$", "$$$_", "$$$$", ];
var s = "";
for( var i = 0; i < text.length; i++ ){
n
= text.charCodeAt( i );
if( n == 0x22 || n == 0x5c ){
s
+= "\\\\\\" + text.charAt( i ).toString(16);
}
else if( (0x21 <= n && n <= 0x2f) || (0x3A <= n && n <= 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){
//}else if( (0x20 <= n && n <= 0x2f) || (0x3A <= n == 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){
s += text.charAt( i );
}
else if( (0x30 <= n && n <= 0x39 ) || (0x61 <= n && n <= 0x66 ) ){
if( s ) r += "\"" + s +"\"+";
r
+= gv + "." + b[ n < 0x40 ? n - 0x30 : n - 0x57 ] + "+";
s
="";
}
else if( n == 0x6c ){ // 'l'
if( s ) r += "\"" + s + "\"+";
r
+= "(![]+\"\")[" + gv + "._$_]+";
s
= "";
}
else if( n == 0x6f ){ // 'o'
if( s ) r += "\"" + s + "\"+";
r
+= gv + "._$+";
s
= "";
}
else if( n == 0x74 ){ // 'u'
if( s ) r += "\"" + s + "\"+";
r
+= gv + ".__+";
s
= "";
}
else if( n == 0x75 ){ // 'u'
if( s ) r += "\"" + s + "\"+";
r
+= gv + "._+";
s
= "";
}
else if( n < 128 ){
if( s ) r += "\"" + s;
else r += "\"";
r
+= "\\\\\"+" + n.toString( 8 ).replace( /[0-7]/g, function(c){ return gv + "."+b[ c ]+"+" } );
s
= "";
}
else{
if( s ) r += "\"" + s;
else r += "\"";
r
+= "\\\\\"+" + gv + "._+" + n.toString(16).replace( /[0-9a-f]/gi, function(c){ return gv + "."+b[parseInt(c,16)]+"+"} );
s
= "";
}
}
if( s ) r += "\"" + s + "\"+";

r
=
gv
+ "=~[];" +
gv
+ "={___:++" + gv +",$$$$:(![]+\"\")["+gv+"],__$:++"+gv+",$_$_:(![]+\"\")["+gv+"],_$_:++"+
gv
+",$_$$:({}+\"\")["+gv+"],$$_$:("+gv+"["+gv+"]+\"\")["+gv+"],_$$:++"+gv+",$$$_:(!\"\"+\"\")["+
gv
+"],$__:++"+gv+",$_$:++"+gv+",$$__:({}+\"\")["+gv+"],$$_:++"+gv+",$$$:++"+gv+",$___:++"+gv+",$__$:++"+gv+"};"+
gv
+".$_="+
"("+gv+".$_="+gv+"+\"\")["+gv+".$_$]+"+
"("+gv+"._$="+gv+".$_["+gv+".__$])+"+
"("+gv+".$$=("+gv+".$+\"\")["+gv+".__$])+"+
"((!"+gv+")+\"\")["+gv+"._$$]+"+
"("+gv+".__="+gv+".$_["+gv+".$$_])+"+
"("+gv+".$=(!\"\"+\"\")["+gv+".__$])+"+
"("+gv+"._=(!\"\"+\"\")["+gv+"._$_])+"+
gv
+".$_["+gv+".$_$]+"+
gv
+".__+"+
gv
+"._$+"+
gv
+".$;"+
gv
+".$$="+
gv
+".$+"+
"(!\"\"+\"\")["+gv+"._$$]+"+
gv
+".__+"+
gv
+"._+"+
gv
+".$+"+
gv
+".$$;"+
gv
+".$=("+gv+".___)["+gv+".$_]["+gv+".$_];"+
gv
+".$("+gv+".$("+gv+".$$+\"\\\"\"+" + r + "\"\\\"\")())();";

return r;
}

jjdecode代码如下:

ContractedBlock.gif ExpandedBlockStart.gif jjdecode.js
function jjdecode(text) {
var output = '';
var g = text.match(/([^=])=~\[\];/)[1];

// Building my scope
var lines = text.match(/([^;]*);/g);

var lookAhead = false;
var finalLine = '';
for(var i in lines) {
if ( ! lines[i].match(/_.\$\(_.\$\(/) && ! lookAhead) {
eval(lines[i]);
}
else {
lookAhead
= true;
finalLine
= finalLine + lines[i];

if (i == lines.length - 1) {
// _.\$\((.*)(\)\(\))
var re = new RegExp(g + '.\\$\\((.*)(\\)\\(\\))');
var reString = finalLine.match(re);
output
= eval(reString[1]);
}
}
}

// Here's the main object, hav' fun!
console.log(eval(g));

return output;
}

demo链接如下:
jjencode    jjdecode

转载于:https://www.cnblogs.com/landonxu/archive/2011/08/09/2131623.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值