本文主要是介绍分析一个JS加密代码,逐步击破,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
源代码
;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, {}));
分析功能
这段代码包含了混淆和解密逻辑。现在,让我逐步分析并添加代码案例来解释每个步骤:
步骤 1:自执行函数定义
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, {})
是该函数的参数,包括一个字符串和一些数字和数组。
步骤 2:重新定义 e
变量
e = String;
在函数内部,它将 e
变量重新定义为全局 String
构造函数。
步骤 3:检查字符串替换操作是否可行
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
变量。
步骤 4:字符串替换操作
while (c--)if (k[c])p = p.replace(new RegExp('\\b' + e(c) + '\\b','g'), k[c]);
这部分代码是主要的解密或解混淆逻辑。它使用 p
字符串和一些循环操作来执行替换。具体的替换操作在这里发生,但由于混淆和变量的重新定义,代码的实际功能不清楚。
结语
需要注意的是,这段代码的混淆和解密逻辑相当复杂,具体的操作和目的不清楚。要理解这段代码的确切功能,可能需要进行更深入的分析,包括查看变量 p
的初始值以及对变量 e
、k
、c
和 r
的详细操作。
js在线加密解密
如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。
也可以到上方网站,底部有我联系方式详谈。
这篇关于分析一个JS加密代码,逐步击破的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!