首页 > 编程语言 >JS加密:JavaScript代码加密混淆

JS加密:JavaScript代码加密混淆

时间:2023-10-20 10:04:38浏览次数:37  
标签:function g5b 加密 代码 JavaScript JS var

JS加密,即JavaScript代码加密混淆,是指对js代码进行数据加密、逻辑混淆。
使js代码不能被分析、复制、盗用,以达到保护js代码、保护js产品、保护js知识产权的目的。

JS加密定义

JS加密,即:JavaScript代码加密混淆、JavaScript代码混淆加密。
JavaScript,简称JS,加密指对JS代码进行密文化处理,使代码难以阅读和理解。
JS代码是公开透明的代码,无论在前端网页环境或是后端NodeJS中,都是如此。JS加密操作通过技术手段对JS代码中的数据进行加密、对代码逻辑进行混淆,使代码无法被阅读和理解,从而达到保护代码的目标。

JS加密原理

专业的JS加密工具,会进行以下步骤实现加密过程。

1、JS代码转化为AST
AST即抽象语法树,是JS代码的底层表现形式,在此阶段,JS代码会经历词法分析、语法分析,直到AST树建立。
2、对AST节点进行加密操作
JS代码的AST节点有各种不同的类型,如数值节点、变量名节点、字符串节点等。JS加密的核心操作是对这些节点进行加密处理。
3、将AST重构为JS代码
对AST节点加密后,将AST重构为JS、重新生成JS代码。经历这三个大的步骤,即完成了JS加密。

JS加密特点

JS代码加密,有多种技术手段,大体上可分为:编码、加密算法、代码变形、逻辑变化。
常见的可选加密选项有:变量名混淆、函数名混淆、类名混淆、数值加密、字符串加密、字符串阵列化、平展控制流、AST执行保护、虚拟机执行、赋值花指令、僵尸代码植入等。

JS加密应用

JS加密应用,有不少工具,最具代表性的两款是JScrambler和JShaman,在行业中都是著名产品、是业内顶级的JavaScript混淆工具。

产品形态

两者都是网站平台形式,在浏览器中打开就能使用。

接口

都有Web API接口,JavaScript、Python、Java、c#等语言都可以调用,可以集成在自己的产品中使用。

操作便捷性
JScrambler使用较复杂,需要注册帐户、登录进入后台才能使用,JShaman则方便很多,无需注册、直接使用。

功能选项
两者都有20多项混淆功能可使用。

加密示例
下面以对一段代码加密为例,演示两者的加密效果。

例程:

function displayNoteTitle(note) {
	alert(note['title']);
}
var flowerNote = {};
flowerNote['title'] = "Flowers";
displayNoteTitle(flowerNote);

JShaman加密结果:

var _0xcb07 = ['title', 'Flowers'];
(function(_0xecc7fb, _0xdfa845) {
	var _0x3b37f1 = function(_0x663ded) {
		while (--_0x663ded) {
			_0xecc7fb['\x70\x75\x73\x68'](_0xecc7fb['\x73\x68\x69\x66\x74']());
		}
	};
	_0x3b37f1(++_0xdfa845);
}(_0xcb07, 0x11c));
var _0x7cb0 = function(_0x108ec8, _0x507f5d) {
	_0x108ec8 = _0x108ec8 - 0x0;
	var _0x586c42 = _0xcb07[_0x108ec8];
	return _0x586c42;
};
	
function displayNoteTitle(_0x23cbc1) {
	alert(_0x23cbc1[_0x7cb0('0x0')]);
}
var flowerNote = {};
flowerNote[_0x7cb0('0x0')] = _0x7cb0('0x1');
displayNoteTitle(flowerNote);

JScrambler加密结果:

var g5b = {
	'S': "A",
	'A': function(b) {
		flowerNote['title'] = b;
	},
	'X': "V",
	'o': (function(E) {
	return (function(s, p) {
		return (function(G) {
			return {
				K: G
			};
		})(function(m) {
			var c, R = 0;
			for (var U = s; Ry;
			})(parseInt, Date, (function(n) {
			return ('' + n)["substring"](1, (n + '')["length"] - 1);
		})('_getTime2'), function(n, a) {
			return new n()[a]();
		}), function(m, R) {
			var d = parseInt(m["charAt"](R), 16)["toString"](2);
			return d["charAt"](d["length"] - 1);
		});
	})('3lrno3f7c'), 'e': 'title', 'V': function(b) {
		x = b;
	}, 'Q': "Flowers",
};
	
function displayNoteTitle(b) {
	alert(b[g5b.e]);
}
var flowerNote = g5b.o.K("3d3") ? {} : "Flowers"; g5b[g5b.S](g5b.Q); 
displayNoteTitle(flowerNote); 
g5b[g5b.X](g5b.D);

总结

JS加密是保护JS代码的有效手段,是提升JS代码安全性、保护JS产品、保护知识产权有效方法。

标签:function,g5b,加密,代码,JavaScript,JS,var
From: https://blog.51cto.com/jsjiami/7946887

相关文章

  • python中json模块
    importjsonstring='{"name":"xxx","age":18,"object":[{"数学":100,"语文":90,"英语":70}]}'print(string)print(type(string))#将json字符串转为python字典data_dic=json.loads(string)print......
  • 20个js工具函数助力高效开发
    1、校验数据类型exportconsttypeOf=function(obj){returnObject.prototype.toString.call(obj).slice(8,-1).toLowerCase()}示例:typeOf('树哥')//stringtypeOf([])//arraytypeOf(newDate())//datetypeOf(null)//nulltypeOf(true)//boolean......
  • go 格式化json
    packagemainimport("bytes""encoding/json""fmt")funcmain(){//原始JSON字符串varjsonStr=[]byte(`{"Name":"Gopher","Title":"Programmer","Contact":......
  • JS加密/解密那些必须知道的事儿
    一直以来,字符串的编码问题对于新手程序员来说,或者平常不太涉猎这方面的程序员来说,是犹如灵异学一样的存在。经常会遇到莫名其妙的编码问题,导致的各种的无法理解的错误。 今天,本问就来介绍一下作者所知晓的一切的字符编码知识。0x1.初识ASCII 说起字符串编码,不得不说到现代计算机的......
  • NodeJS之父Ryan Dahl:我不想被认为是一个JavaScript专家
    NodeJS之父RyanDahl:我不想被认为是一个JavaScript专家    被称为Node之父的RyanDahl在2012年离开了Node项目,后来加入Google的Brain团队,从事深度学习方面的研究,主要专注在图像的着色和超解像技术上。拥有深厚数学功底的Ryan经历了从Web开发到深度学习的跨越,还主导了......
  • C# 实现MD5加密
    C#实现MD5加密C#MD5加密日常程序开发中,涉及到敏感数据内容,通常会采取加密处理以保证数据安全,本篇文章讲述了在C#中使用MD5方法加密数据MD5介绍MD5的全称是message-digestalgorithm5,MD5算法属于hash算法的一类,对消息进行运算,产生一个128位的消息摘要(32位数字字母),并且......
  • 泛微E-Office json_common.php文件存在sql注入漏洞
    漏洞简介泛微e-office为企业办公提供丰富应用,覆盖常见协作场景,开箱即用。满足人事、行政、财务、销售、运营、市场等不同部门协作需求,帮助组织高效人事管理。系统json_common.php文件存在SQL注入漏洞漏洞复现fofa语法:app="泛微-EOffice"登录页面如下:POC:POST/building/......
  • 如何保护价值上千万的Node.js源代码?
    如何保护价值上千万的Node.js源代码?https://zhuanlan.zhihu.com/p/843864561|0一个强大的JS混淆器。github.com/javascript-obfuscator/javascript-obfuscator2|0一套JS代码安全问题解决方案。www.jshaman.com3|0一个极简的Node.js字节码编译器。github.com/OsamaAbbas/byte......
  • 用友时空KSOA dept.jsp SQL注入漏洞
    漏洞简介用友时空KSOA是建立在SOA理念指导下研发的新一代产品,是根据流通企业最前沿的I需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的IT系统之间彼此轻松对话,帮助流通企业保护原有的IT投资,简化IT管理,提升竞争能力,确保企业整体的战略目标以及创新活动的实现。系统dep......
  • 用友GRP-RMIS datalist.jsp SQL注入漏洞
    漏洞描述用友GRP-RMIS系统的datalist.jsp存在sql注入漏洞漏洞复现fofa语法:app="用友-GRP-RMIS系统"系统登录页面如下:POC:POST/datalist.jspHTTP/1.1Host:xxxxUser-Agent:python-requests/2.31.0Accept-Encoding:gzip,deflateAccept:*/*Connection:closeConten......