admin 管理员组文章数量: 887021
2024年1月19日发(作者:网络工程师证好考吗)
下面是一段加密后的代码,很晕吧,但事实上只是使用了障眼法,把换行取消掉了而已,让我们排版一下再来看看到底是什么?
eval(function(p,a,c,k,e,r){e=function(c){return(c35?arCode(c+29):ng(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=e(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?arCode(c+29):ng(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=e(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;” 之前打印出来既可,例如:“n(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("我是第一个参数。", "还有我是第二个参数");
解密的一个实例:
版权声明:本文标题:如何解密eval(function(p,a,c,k,e,r)……) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705615335h492505.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论