;eval(function(p, a, c, k, e, r) {
e = String;
if (!''.replace(/^/, String)) {
while (c--)
r[c] = k[c] || 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
}('0.1(2)', 3, 3, 'console|log|123'.split('|'), 0, {}));
这段代码包含了混淆和解密逻辑。现在,让我逐步分析并添加代码案例来解释每个步骤:
javascriptCopy code;eval(function(p, a, c, k, e, r) {
// ...
}('0.1(2)', 3, 3, 'console|log|123'.split('|'), 0, {}));
这是一个自执行函数,它接受六个参数:p
、a
、c
、k
、e
和 r
。其中,('0.1(2)', 3, 3, 'console|log|123'.split('|'), 0, {})
是该函数的参数,包括一个字符串和一些数字和数组。
e
变量e = String;
在函数内部,它将 e
变量重新定义为全局 String
构造函数。
if (!''.replace(/^/, String)) {
while (c--)
r[c] = k[c] || c;
k = [function(e) {
return r[e]
}
];
e = function() {
return '\\w+'
}
;
c = 1
}
这部分代码检查一个字符串的替换操作是否可行,如果不可行,则进入一个循环,在循环中重新定义了 e
、k
和 c
变量。
while (c--)
if (k[c])
p = p.replace(new RegExp('\\b' + e(c) + '\\b','g'), k[c]);
这部分代码是主要的解密或解混淆逻辑。它使用 p
字符串和一些循环操作来执行替换。具体的替换操作在这里发生,但由于混淆和变量的重新定义,代码的实际功能不清楚。
需要注意的是,这段代码的混淆和解密逻辑相当复杂,具体的操作和目的不清楚。要理解这段代码的确切功能,可能需要进行更深入的分析,包括查看变量 p
的初始值以及对变量 e
、k
、c
和 r
的详细操作。
js在线加密解密
如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。
也可以到上方网站,底部有我联系方式详谈。