js加密逆向(js代码混淆加密算法)

JavaScript代码混淆加密,无论在前端、H5、或是后端,都是被广泛需要的,用于保护JS源码,防止源码被分析、复制、破解、盗用。

js加密逆向(js代码混淆加密算法)

本文简单展示部分JS代码混淆加密技术,用于演示对JS代码进行混淆加密的有效性。

本文所述,原理上而言:一段原始JS代码将经历词法分析、语法分析,由代码逆变为AST(抽象语法树),再对AST进行三重混淆加密,最后再将AST重建为代码。

例如,两句JS代码,给变量,赋常量值:

var a = 1234;
console.log("a=",a);

一重保护:

将常量变为运算表达式,结果为:

var a = 602216 ^ 603322;
console.log("a=", a);

运行:

js加密逆向(js代码混淆加密算法)

二重保护:

将运算表达式,转为函数调用表达式,结果为:

var a = function (s, h) {
  return s ^ h;
}(578586, 577736);

console.log("a=", a);

运行:

js加密逆向(js代码混淆加密算法)

三重保护:

对运算表达式加密,用Eval加密,结果为:

var a = function (s, h) {
  return eval(String.fromCharCode(115, 32, 94, 32, 104));
}(812440, 811338);

console.log("a=", a);

运行:

js加密逆向(js代码混淆加密算法)

相比于最初,代码已经发生了非常大的变化。他人很难明白你原始的代码是什么样的。

即使想要逆向破解,但,仅此一行代码来说,从第三重加密开始逆,逆到到二重、第一重,理论上是可能的。

但实际上,第三者却无法知道原始代码是怎样写的,很可能本身就是第二或第一重加密代码的样子,强行破解,很可能用力过猛返而更无法得到代码原样。

且,此示例仅是一行代码,在实际的情景中,代码有更多,混淆加密应用的方法也更多,比如业界著名的JShaman平台,就具有平展控制流、字符串阵列化、僵尸代码植入等众多JS代码加密手段。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论