代码混淆技术(逆生三重:JavaScript代码混淆加密技术展示)

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

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

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

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

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

一重保护:

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

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

运行:

二重保护:

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

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

运行:

三重保护:

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

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

运行:

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

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

代码混淆

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

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

您可以还会对下面的文章感兴趣

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友