JShaman JS代码混淆加密效果
关键字: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['\x6c\x6f\x67']("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
九、字符串加密
示例JS代码:
1 | var str = "jshaman.com";
选项配置:
字符串加密
混淆加密后的JS代码:
var str = "\u006a\u0073\u0068\u0061\u006d\u0061\u006e\u002e\u0063\u006f\u006d";
十、僵尸代码植入
示例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
十四、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
十五、字符串阵列化
示例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
在实际工作中,当对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