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("我是第一个参数。", "还有我是第二个参数");

解密的一个实例:


本文标签: 代码 加密 执行 参数 障眼法