您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > javascript

JShaman JS代码混淆加密效果

时间:2022-08-17 14:02:44  来源:  作者:真身法界

关键字:js加密、js混淆、js代码混淆加密

JShaman是专业的JS代码混淆加密平台,拥有数十种自研JS代码保护技术。

以下展示部分功能效果。

注1:代码中红色、绿色字符为加密前后差异内容。

注2:本文代码,皆可实测,复制粘贴即可运行。

一、局部变量名、函数名混淆

示例JS代码:

1 | function demo(){

2 | var a=1;

3 | function a(){

4 | }

5 | a();

6 | }

选项配置:

局部变量名、函数名混淆

混淆加密后的JS代码:

function demo() {

var _0xf = 1;

function _0xf() {}

_0xf();

}

二、全局变量名混淆

示例JS代码:

1 | var global_a = 0;

2 | function demo(){

3 | }

选项配置:

全局变量名混淆

混淆加密后的JS代码:

var _0x704g = 0;

function demo() {}

三、全局函数名混淆

示例JS代码:

1 | function demo(){

2 | }

3 | demo();

选项配置:

全局函数名混淆

混淆加密后的JS代码:

function _0xe611c() {}

_0xe611c();

四、成员表达式加密

示例JS代码:

1 | console.log("hello world");

选项配置:

成员表达式加密

混淆加密后的JS代码:

console['x6cx6fx67']("hello world");

五、数值常量加密

示例JS代码:

1 | var a=1;

选项配置:

数值常量加密

混淆加密后的JS代码:

var a = 540245 ^ 540244;

六、二进制表达式混淆

示例JS代码:

1 | var a=1+2;

选项配置:

二进制表达式混淆

混淆加密后的JS代码:

var a = function (s, h) {

return s + h;

}(1, 2);

七、布尔型常量加密

示例JS代码:

1 | var a=true;

选项配置:

布尔型常量加密

混淆加密后的JS代码:

var a = !![];

八、JSON数据加密

示例JS代码:

1 | var a={"password":"123456"};

选项配置:

JSON数据加密

字符串阵列化

阵列字符串加密

混淆加密后的JS代码:

var _0x483a8b=["114.3.41.41.43.121.104.122.122.126.102.123.109.43.51.41.43.56.59.58.61.60.63.43.3.116."];function _0x561e1b(str,dy_key){dy_key=9;var i,k,str2="";k=str.split(".");for(i=0;i<k.length-1;i++){str2+=String.fromCharCode(k[i]^dy_key);}return str2;}var a=JSON.parse(_0x561e1b(_0x483a8b[0]));

九、字符串加密

示例JS代码:

1 | var str = "jshaman.com";

选项配置:

字符串加密

混淆加密后的JS代码:

var str = "u006au0073u0068u0061u006du0061u006eu002eu0063u006fu006d";

十、僵尸代码植入

示例JS代码:

1 | var a=1;

2 | var b=2;

3 | var c=3

选项配置:

僵尸代码植入

混淆加密后的JS代码:

var _0x4d = 9 + 3;

var a = 1;

_0x4d = 3;

var _0x = 6 + 8;

var b = 2;

_0x = 5 + 7;

var _0xaeb;

var c = 3;

_0xaeb = "fckk";

十一、Eval加密

示例JS代码:

1 | var a=2+3;

选项配置:

Eval加密

混淆加密后的JS代码:

var a=eval(String.fromCharCode(50,32,43,32,51));

十二、平展控制流

示例JS代码:

1 | function demo(){

2 | var a=1;

3 | a=a+1;

4 | console.log(a);

5 | }

选项配置:

平展控制流

混淆加密后的JS代码:

function demo() {

var _array = "2|1|0".split("|"),

_index = 0;

while (!![]) {

switch (+_array[_index++]) {

case 0:

console.log(a);

continue;

case 1:

a = a + 1;

continue;

case 2:

var a = 1;

continue;

}

break;

}

}

十三、虚拟机执行保护

示例JS代码:

1 | console.log(1+2);

选项配置:

虚拟机执行保护

混淆加密后的JS代码:

function _0xe670c(vm_opcode){var op={push:32,add:33,sub:34,mul:35,div:36,pop:37,xor:38};var stack=[];var ip=-1;var sp=-1;while(ip<vm_opcode.length){ip++;switch(vm_opcode[ip]){case op.push:{ip++;stack.push(vm_opcode[ip]);sp++;break;}case op.add:{var op_1=stack[sp-1];var op_2=stack[sp];var value=op_1+op_2;stack.push(value);sp++;break;}case op.sub:{var op_1=stack[sp-1];var op_2=stack[sp];var value=op_1-op_2;stack.push(value);sp++;break;}case op.mul:{var op_1=stack[sp-1];var op_2=stack[sp];var value=op_1*op_2;stack.push(value);sp++;break;}case op.div:{var op_1=stack[sp-1];var op_2=stack[sp];var value=op_1/op_2;stack.push(value);sp++;break;}case op.xor:{var op_1=stack[sp-1];var op_2=stack[sp];var value=op_1^op_2;stack.push(value);sp++;break;}case op.pop:{return stack[sp];}}}}console.log(_0xe670c([32,1,32,2,33,37]));

十四、AST加密

示例JS代码:

1 | console.log("JShaman专注于JS混淆加密");

选项配置:

AST加密

混淆加密后的JS代码:

var visitors={File(node,scope){ast_excute(node.program,scope);},Program(program,scope){for(i=0;i<program.body.length;i++){ast_excute(program.body[i],scope);}},ExpressionStatement(node,scope){return ast_excute(node.expression,scope);},CallExpression(node,scope){var func=ast_excute(node.callee,scope);var args=node.arguments.map(function(arg){return ast_excute(arg,scope);});var value;if(node.callee.type==='MemberExpression'){value=ast_excute(node.callee.object,scope);}return func.Apply(value,args);},MemberExpression(node,scope){var obj=ast_excute(node.object,scope);var name=node.property.name;return obj[name];},Identifier(node,scope){return scope[node.name];},StringLiteral(node){return node.value;},NumericLiteral(node){return node.value;}};function ast_excute(node,scope){var evalute=visitors[node.type];if(!evalute){throw new Error("Unknown AST type:",node.type);}return evalute(node,scope);}ast_excute({"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"console"},"property":{"type":"Identifier","name":"log"}},"arguments":[{"type":"StringLiteral","value":"JShaman专注于JS混淆加密"}]},{console:console});

十五、字符串阵列化

示例JS代码:

1 | var a="abc";

2 | var b="def";

选项配置:

字符串阵列化

混淆加密后的JS代码:

var _0xef = ["abc", "def"];

var a = _0xef[0];

var b = _0xef[1];

十六、阵列字符串加密

示例JS代码:

1 | var a="abc";

2 | var b="def";

选项配置:

字符串阵列化

阵列字符串加密

混淆加密后的JS代码:

var _0xa1e6a=["104.107.106.","109.108.111."];function _0x34c(str,dy_key){dy_key=9;var i,k,str2="";k=str.split(".");for(i=0;i<k.length-1;i++){str2+=String.fromCharCode(k[i]^dy_key);}return str2;}var a=_0x34c(_0xa1e6a[0]);var b=_0x34c(_0xa1e6a[1]);

在实际工作中,当对JS代码进行混淆加密时,通常不会单独的使用某个以上所展示的功能选项,而是会混合使用,加密效果更是比单独展示的好很多倍。如下示例JS代码:

1 |

2 | var a = "jshaman.com是专业的JAVAscript代码混淆加密平台";

3 | function demo(){

4 | var b = 1;

5 | var c = 1+2;

6 | var d = true;

7 | var e = {"e":"123456"};

8 | return e;

9 | }

10 | var f = demo();

11 | console.log(f);

12 |

选项配置:

JSON数据加密

僵尸代码植入

局部变量名、函数名混淆

全局变量名混淆

全局函数名混淆

函数名混淆补充处理

AST加密

成员表达式加密

数值常量加密

虚拟机执行保护

二进制表达式混淆

布尔型常量加密

Eval加密

字符串加密

平展控制流

收缩控制流

反格式化

字符串阵列化

阵列字符串加密

代码防篡改

混淆加密后的JS代码:

var _0x9edadg=["3.","117.","68.108.100.107.108.123.76.113.121.123.108.122.122.96.102.103.","117.","92.103.98.103.102.126.103.41.72.90.93.41.125.112.121.108.51.","99.122.97.104.100.104.103.39.106.102.100.26150.19994.19987.30349.67.104.127.104.122.106.123.96.121.125.20202.30728.28158.28111.21161.23503.24186.21497.","117.","108.111.104.97.","114.3.41.41.43.108.43.51.41.43.56.59.58.61.60.63.43.3.116."];function _0xda(str,dy_key){if(arguments.callee.toString().length!=parseFloat('0000000242')){throw Error('Tamper proof');}dy_key=9;var i,k,str2="";k=str.split(".");for(i=0;i<k.length-1;i++){str2+=String.fromCharCode(k[i]^dy_key);}return str2;}function _0x431fe(){if(arguments.callee.toString().length!=parseFloat('0000000200')){throw Error('Tamper proof');}if(arguments.callee.toString().indexOf(_0xda(_0x9edadg[0]))!=-1){arguments.callee();}}{_0x431fe();}function _0x39ge(vm_opcode){if(arguments.callee.toString().length!=parseFloat('0000002073')){throw Error('Tamper proof');}function _0x431fe(){if(arguments.callee.toString().length!=parseFloat('0000000200')){throw Error('Tamper proof');}if(arguments.callee.toString().indexOf(_0xda(_0x9edadg[0]))!=-1){arguments.callee();}}{_0x431fe();}var _array="4|0|2|1|3".split(_0xda(_0x9edadg[1])),_index=0;while(!![]){switch(+_array[_index++]){case 0:var stack=[];continue;case 1:var sp=-1;continue;case 2:var ip=-1;continue;case 3:while(eval(String.fromCharCode(105,112,32,60,32,118,109,95,111,112,99,111,100,101,46,108,101,110,103,116,104))){eval(String.fromCharCode(105,112,43,43));switch(vm_opcode[ip]){case op.push:{eval(String.fromCharCode(105,112,43,43));stack.push(vm_opcode[ip]);eval(String.fromCharCode(115,112,43,43));break;}case op.add:{var op_1=stack[eval(String.fromCharCode(115,112,32,45,32,49))];var op_2=stack[sp];var value=function(s,h){return eval(String.fromCharCode(115,32,43,32,104));}(op_1,op_2);stack.push(value);eval(String.fromCharCode(115,112,43,43));break;}case op.sub:{var op_1=stack[eval(String.fromCharCode(115,112,32,45,32,49))];var op_2=stack[sp];var value=function(s,h){return eval(String.fromCharCode(115,32,45,32,104));}(op_1,op_2);stack.push(value);eval(String.fromCharCode(115,112,43,43));break;}case op.mul:{var op_1=stack[sp-1];var op_2=stack[sp];var value=function(s,h){return s*h;}(op_1,op_2);stack.push(value);eval(String.fromCharCode(115,112,43,43));break;}case op.div:{var op_1=stack[eval(String.fromCharCode(115,112,32,45,32,49))];var op_2=stack[sp];var value=function(s,h){return s/h;}(op_1,op_2);stack.push(value);eval(String.fromCharCode(115,112,43,43));break;}case op.xor:{var op_1=stack[eval(String.fromCharCode(115,112,32,45,32,49))];var op_2=stack[sp];var value=function(s,h){return eval(String.fromCharCode(115,32,94,32,104));}(op_1,op_2);stack.push(value);eval(String.fromCharCode(115,112,43,43));break;}case op.pop:{return stack[sp];}}}continue;case 4:var op={push:32,add:33,sub:34,mul:35,div:36,pop:37,xor:38};continue;}break;}}var visitors={File(node,scope){ast_excute(node['x70x72x6fx67x72x61x6d'],scope);},Program(program,scope){for(i=_0x39ge([32,743147,32,743147,38,37]);eval(String.fromCharCode(105,32,60,32,112,114,111,103,114,97,109,91,39,92,120,54,50,92,120,54,102,92,120,54,52,92,120,55,57,39,93,91,39,92,120,54,99,92,120,54,53,92,120,54,101,92,120,54,55,92,120,55,52,92,120,54,56,39,93));i++){ast_excute(program['x62x6fx64x79'][i],scope);}},ExpressionStatement(node,scope){return ast_excute(node['x65x78x70x72x65x73x73x69x6fx6e'],scope);},CallExpression(node,scope){var func=ast_excute(node['x63x61x6cx6cx65x65'],scope);var args=node['x61x72x67x75x6dx65x6ex74x73']['x6dx61x70'](function(arg){return ast_excute(arg,scope);});var value;if(node['x63x61x6cx6cx65x65']['x74x79x70x65']===_0xda(_0x9edadg[2])){value=ast_excute(node['x63x61x6cx6cx65x65']['x6fx62x6ax65x63x74'],scope);}return func['x61x70x70x6cx79'](value,args);},MemberExpression(node,scope){var obj=ast_excute(node['x6fx62x6ax65x63x74'],scope);var name=node['x70x72x6fx70x65x72x74x79']['x6ex61x6dx65'];return obj[name];},Identifier(node,scope){return scope[node['x6ex61x6dx65']];},StringLiteral(node){return node['x76x61x6cx75x65'];},NumericLiteral(node){return node['x76x61x6cx75x65'];}};function ast_excute(node,scope){if(arguments.callee.toString().length!=parseFloat('0000000426')){throw Error('Tamper proof');}var _array="0|1|2".split(_0xda(_0x9edadg[3])),_index=0;while(!![]){switch(+_array[_index++]){case 0:var evalute=visitors[node['x74x79x70x65']];continue;case 1:if(!evalute){throw new Error(_0xda(_0x9edadg[4]),node['x74x79x70x65']);}continue;case 2:return evalute(node,scope);continue;}break;}}var _0xe1e;var _0xac=_0xda(_0x9edadg[5]);_0xe1e=_0x39ge([32,859516,32,859516,38,37])+_0x39ge([32,944312,32,944316,38,37]);function _0x573fa(){if(arguments.callee.toString().length!=parseFloat('0000000670')){throw Error('Tamper proof');}var _array="0|1|3|5|2|4|6".split(_0xda(_0x9edadg[6])),_index=0;while(!![]){switch(+_array[_index++]){case 0:var _0x39fb=_0x39ge([32,255147,32,255146,38,37]);continue;case 1:var _0x=function(s,h){return eval(String.fromCharCode(115,32,43,32,104));}(_0x39ge([32,923561,32,923560,38,37]),_0x39ge([32,495327,32,495325,38,37]));continue;case 2:_0x7e=_0xda(_0x9edadg[7]);continue;case 3:var _0x7e;continue;case 4:var _0x88c21g=JSON['x70x61x72x73x65'](_0xda(_0x9edadg[8]));continue;case 5:var _0x537ac=!![];continue;case 6:return _0x88c21g;continue;}break;}}var _0xd;var _0x2f=_0x573fa();_0xd=_0x39ge([32,688155,32,688158,38,37]);console['x6cx6fx67'](_0x2f);



Tags:JShaman   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
针对JavaScript混淆加密,JShaman推出新功能
JShaman英文版在最新的一次更新时,增加了新功能:JavaScript代码混淆加密完成后,可以显示各功能耗时、处理的AST节点数量,以此可知对代码做了哪些保护处理。如上图所示,在此例中,对...【详细内容】
2023-09-22  Search: JShaman  点击:(211)  评论:(0)  加入收藏
UglifyJS 和JShaman相比有什么不同?
UglifyJS 和JShaman相比有什么不同? UglifyJS主要功能是压缩JS代码,减小代码体积; JShaman是专门用于对JS代码混淆加密,目的是让JS代码变的不可读、混淆功能逻辑、加密代码中的...【详细内容】
2023-08-17  Search: JShaman  点击:(282)  评论:(0)  加入收藏
在Node.JS中调用JShaman接口,实现JS代码加密。
在Node.JS中调用JShaman接口,实现JS代码加密。使用axios库实现https的post请求,代码如下:const axios = require("axios");const jshamanConfig = { //源码 "js_code": &#39;fu...【详细内容】
2022-12-06  Search: JShaman  点击:(370)  评论:(0)  加入收藏
JShaman JS代码混淆加密效果
关键字:js加密、js混淆、js代码混淆加密JShaman是专业的JS代码混淆加密平台,拥有数十种自研JS代码保护技术。以下展示部分功能效果。注1:代码中红色、绿色字符为加密前后差异内...【详细内容】
2022-08-17  Search: JShaman  点击:(387)  评论:(0)  加入收藏
▌简易百科推荐
17 个你需要知道的 JavaScript 优化技巧
你可能一直在使用JavaScript搞开发,但很多时候你可能对它提供的最新功能并不感冒,尽管这些功能在无需编写额外代码的情况下就可以解决你的问题。作为前端开发人员,我们必须了解...【详细内容】
2024-04-03  前端新世界  微信公众号  Tags:JavaScript   点击:(5)  评论:(0)  加入收藏
你不可不知的 15 个 JavaScript 小贴士
在掌握如何编写JavaScript代码之后,那么就进阶到实践&mdash;&mdash;如何真正地解决问题。我们需要更改JS代码使其更简单、更易于阅读,因为这样的程序更易于团队成员之间紧密协...【详细内容】
2024-03-21  前端新世界  微信公众号  Tags:JavaScript   点击:(27)  评论:(0)  加入收藏
又出新JS运行时了!JS运行时大盘点
Node.js是基于Google V8引擎的JavaScript运行时,以非阻塞I/O和事件驱动架构为特色,实现全栈开发。它跨平台且拥有丰富的生态系统,但也面临安全性、TypeScript支持和性能等挑战...【详细内容】
2024-03-21  前端充电宝  微信公众号  Tags:JS   点击:(26)  评论:(0)  加入收藏
构建一个通用灵活的JavaScript插件系统?看完你也会!
在软件开发中,插件系统为应用程序提供了巨大的灵活性和可扩展性。它们允许开发者在不修改核心代码的情况下扩展和定制应用程序的功能。本文将详细介绍如何构建一个灵活的Java...【详细内容】
2024-03-20  前端历险记  微信公众号  Tags:JavaScript   点击:(20)  评论:(0)  加入收藏
对JavaScript代码压缩有什么好处?
对JavaScript代码进行压缩主要带来以下好处: 减小文件大小:通过移除代码中的空白符、换行符、注释,以及缩短变量名等方式,可以显著减小JavaScript文件的大小。这有助于减少网页...【详细内容】
2024-03-13  WangLiwen    Tags:JavaScript   点击:(2)  评论:(0)  加入收藏
跨端轻量JavaScript引擎的实现与探索
一、JavaScript 1.JavaScript语言JavaScript是ECMAScript的实现,由ECMA 39(欧洲计算机制造商协会39号技术委员会)负责制定ECMAScript标准。ECMAScript发展史: 2.JavaScript...【详细内容】
2024-03-12  京东云开发者    Tags:JavaScript   点击:(2)  评论:(0)  加入收藏
面向AI工程的五大JavaScript工具
令许多人惊讶的是,一向在Web开发领域中大放异彩的JavaScript在开发使用大语言模型(LLM)的应用程序方面同样大有价值。我们在本文中将介绍面向AI工程的五大工具,并为希望将LLM...【详细内容】
2024-02-06    51CTO  Tags:JavaScript   点击:(53)  评论:(0)  加入收藏
JS小知识,使用这6个小技巧,避免过多的使用 if 语句
最近在重构我的代码时,我注意到早期的代码使用了太多的 if 语句,达到了我以前从未见过的程度。这就是为什么我认为分享这些可以帮助我们避免使用过多 if 语句的简单技巧很重要...【详细内容】
2024-01-30  前端达人  今日头条  Tags:JS   点击:(57)  评论:(0)  加入收藏
18个JavaScript技巧:编写简洁高效的代码
本文翻译自 18 JavaScript Tips : You Should Know for Clean and Efficient Code,作者:Shefali, 略有删改。在这篇文章中,我将分享18个JavaScript技巧,以及一些你应该知道的示例...【详细内容】
2024-01-30  南城大前端  微信公众号  Tags:JavaScript   点击:(71)  评论:(0)  加入收藏
使用 JavaScript 清理我的 200GB iCloud,有了一个意外发现!
本文作者在综合成本因素之下,决定用 Java 脚本来清理一下自己的 iCloud,结果却有了一个意外发现,即在 iCloud 中上传同一个视频和删除此视频之后,iCloud 的空间并不一致,这到底是...【详细内容】
2024-01-11    CSDN  Tags:JavaScript   点击:(99)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条