逆生三重: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代码加密手段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值