js代码function(p,a,c,k,e,r)加密方式如何解密

下面是一段加密后的代码,很晕吧,但事实上只是使用了障眼法,把换行取消掉了而已,让我们排版一下再来看看到底是什么?

eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c–)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\w+'};c=1};while(c–)if(k[c])p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c]);return p}('1 t;1 y=R;1 i=l;1 f=x;1 8=2.K;1 6='';5 C(a){i=l;f=x;8=2.13;y=Z;6=a;v();u()}5 u(){k(t!=q){t.L.J=6;t.r()}}5 j(){k(t==q){3.4(“7″).B=”7”;3.4(“7″).9.1a=”18”;t=12 10.X('h',{8:8,T:i,S:f,Q:i,P:f,O:'7',6:6});k(!3.N.M){o();t.r()}}}5 v(){p.n(I,'H',j);p.n(3.4(“h”),'G',j)}5 o(){1 a=3.4(“7”);1 b=3.4(“F”);1 c=0;1 d=0;1 e=b.m;E(e.D!=”V”){c=c+e.W;d=d+e.A;e=e.m}c=c+Y/2+3.4(“h”).19/2;d=d+3.4(“h”).z-17(a.9.z);a.9.14=d+”w”;a.9.11=c+”w”}5 15(a){1 b=16(a).U(/^[\s]+|[\s]+$/g,'');1b b}',62,74,'|var||document|getElementById|function|previewSrc|previewArea|radio|style||||||mHeight||testImage|mWidth|createPreview|if|85|offsetParent|observe|setPreviewWrapPos|Event|null|reset|||resetPreview|observe_pic|px|70|isNeck|height|offsetTop|className|initProduct|tagName|while|pbigImg|mouseover|load|window|src|6666667|previewImg|attachEvent|body|previewWrap|maxHeight|maxWidth|false|minHeight|minWidth|replace|BODY|offsetLeft|ImgWithPreview|310|true|Cropper|left|new|666666667|top|Trim|String|parseInt|absolute|width|position|return'.split('|'),0,{}))

排版后

eval(
function(p,a,c,k,e,r){
e = function(c){
return(c35?String.fromCharCode(c+29):c.toString(36))
};
if(!''.replace(/^/,String)) {
while(c–)r[e(c)]=k[c]||e(c);
k = [function(e){return r[e]}];
e = function(){return'\w+'};
c = 1
};
while (c–) if(k[c])p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c]);
return p;
}('1 t;1 y=R;1 i=l;1 f=x;1 8=2.K;1 6='';5 C(a){i=l;f=x;8=2.13;y=Z;6=a;v();u()}5 u(){k(t!=q){t.L.J=6;t.r()}}5 j(){k(t==q){3.4(“7″).B=”7”;3.4(“7″).9.1a=”18”;t=12 10.X('h',{8:8,T:i,S:f,Q:i,P:f,O:'7',6:6});k(!3.N.M){o();t.r()}}}5 v(){p.n(I,'H',j);p.n(3.4(“h”),'G',j)}5 o(){1 a=3.4(“7”);1 b=3.4(“F”);1 c=0;1 d=0;1 e=b.m;E(e.D!=”V”){c=c+e.W;d=d+e.A;e=e.m}c=c+Y/2+3.4(“h”).19/2;d=d+3.4(“h”).z-17(a.9.z);a.9.14=d+”w”;a.9.11=c+”w”}5 15(a){1 b=16(a).U(/^[\s]+|[\s]+$/g,'');1b b}',62,74,'|var||document|getElementById|function|previewSrc|previewArea|radio|style||||||mHeight||testImage|mWidth|createPreview|if|85|offsetParent|observe|setPreviewWrapPos|Event|null|reset|||resetPreview|observe_pic|px|70|isNeck|height|offsetTop|className|initProduct|tagName|while|pbigImg|mouseover|load|window|src|6666667|previewImg|attachEvent|body|previewWrap|maxHeight|maxWidth|false|minHeight|minWidth|replace|BODY|offsetLeft|ImgWithPreview|310|true|Cropper|left|new|666666667|top|Trim|String|parseInt|absolute|width|position|return'.split('|'),0,{}))

那么熟悉这种函数写法的应该就能明白这个加密原理了吧。只要细心点就能发现其实这种加密手段是用来防止一些拿来主意者。上面加密的js代码如果想得到其原代码可以在“return p;” 之前打印出来既可,例如:“document.writeln(p);”。 顺便介绍一下 eval 方法。

eval 方法
检查 Javascript 代码并执行.

eval(codeString)

必选项 codestring 参数是包含有效 Javascript 代码的字符串值。这个字符串将由 Javascript 分析器进行分析和执行。

说明
eval 函数允许 Javascript 源代码的动态执行。例如,下面的代码创建了一个包含 Date 对象的新变量 mydate :

eval(“var mydate = new Date();”);
传递给 eval 方法的代码执行时的上下文和调用 eval 方法的一样.
这种语法是这样的,例如代码:

var test_func = function (par1, par2) {
alert("par1: "+par1+"npar2: "+par2);
}("我是第一个参数。", "还有我是第二个参数");

和下面代码效果是一样的:

function test_func (par1, par2) {
alert("par1: "+par1+"npar2: "+par2);
}
test_func("我是第一个参数。", "还有我是第二个参数");

解密function(p,a,c,k,e,r)用脚本,运行即可见效果:
[html]



js加密解密 – 志文工作室











[/html]

推荐一个不错的在线加密解密工具:http://issmall.isgreat.org/

点赞 (0)

发表评论

电子邮件地址不会被公开。 必填项已用*标注