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

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

文章图片1

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

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

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

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

一重保护:

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

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

运行:

文章图片2

二重保护:

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

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

运行:

文章图片3

三重保护:

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

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

运行:

文章图片4

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

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

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

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

4种JavaScript中不同迭代对象的方法

英文 | https://javascript.plaine… test: , test: false,};for (let [key, value] of bject.entries(obj)) { console.log(key, value);}//test atit//test /…

理解JavaScript中的数据结构(链表)

对于 JS 初学者,理解链表可能是一项比较困难的任务,因为 JS 没有提供内置的链表。在像 JS 这样的高级语言中,我们需要从头开始实现此数据结构,如果你不熟悉此数据结构的工作方式,则实现部分会变得更加困难 ?。

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

JavaScript代码混淆加密,无论在前端、H5、或是后端,都是被广泛需要的,用于保护JS源码,防止源码被分析、复制、破解、盗用。本文简单展示部分JS代码混淆加密技术,用于演示对JS代码进行混淆加密的有效性。

CSS居中解决方案荟萃

我是poetry,点击上方“关注”,每天为你分享前端进阶与个人精进干货。

20 个鲜为人知的 HTML 技巧,以及示例示例

什么是 HTML?HTML (Hypertext Markup Language)是标准标记语言,是 Web 浏览器显示的基础。 此外,CSS(Cascading Style Sheets)等技术以及JavaScript等脚本语言也支持这种技术。