1. 首页 > 科技资讯

javascript技术,javascript奇数

JavaScript奇技淫巧:加密JS代码反调试

JS代码搞混加密,已被人们应用,因为他非常的有用、非常实用,可用作维护代码、安全防护剖析、拷贝、盗取,还可用于游戏审核、APP结构加固等多个方面。

搞混加密后JS代码,很有可能被别人剖析,为了能抵抗剖析调节,文中共享一种反调试技术性。

作用实际效果

使函数名不能改动,改动则代码无法正常启动

原理

将JS代码用可逆性优化算法开展加密。公布或公布的代码时,会提供这一部分“保密”。

运作代码其中包含解密函数,但密匙是隐式传送,难被发现了。并且可以对解密函数再加密,使剖析十分困难。

案例演试

实例代码:

首先用JShaman进行相应的搞混,仅开启函数名加密,目的是获得随机事件函数名,获得代码如下所示:

函数名从最原始的get_copyright成了_0xag。

在研究调节时,分析者总会将毫无意义的函数名改为有含义的名字,使有利于了解。

文中我们能做的,便是严禁更名,假如改动函数名,函数就难以执行。

再次实际操作,解决下列两行,即函数其中包含的代码:

选用xor优化算法,把它变为加密标识符:

留意,加密时传入参数值是“_0xag”,即代码所属的函数名,此值在解密时一般不会显式发生的。

以前的代码,改造成下列方式:

运作:

输入参数与改动代码前同样。

这一段代码的寓意是:解密、并且用eval执行。这就达到跟初始代码一样的作用实际效果。

绝妙之处就在于:解密时,并没有传入加密后的主要参数:“_0xag”!

而如果对于函数开展更名,例如改成abc,执行可能出差错:

这是因为:解密时隐式的采用了arguments.callee.name,即调用者函数名。

当函数位是_0xag时,与加密时传入的密匙主要参数一至,那可以解出来正确代码标识符,也就能被eval执行,而函数名改成abc时,等同于传入的标识符就会变成abc,当然没法解密出正确初始代码,就无法用eval执行。

详细代码

function random_key(key, i){

return key.charCodeAt( Math.floor(i % key.length) );

}

function enxor(data, key){

return data.split("").map(function(c,i,a){

return data.charCodeAt(i)^random_key(key,i);

}).join(",");

}

function dexor(data, key){

return data.split(",").map(function(c,i,a){

return String.fromCharCode(c^random_key(key,i));

}).join("");

}

var js_code=`

var _0xbc99c = "jshaman.com";

var from_year = 523898 ^ 522651;

var _0x7d68de = "(c)" from_year "-" new Date().getFullYear() "," _0xbc99c;

console.log(_0x7d68de);

`

function _0xag(){

var decode_js_code = dexor("85,70,25,19,71,0,0,0,3,4,102,9,27,65,90,127,18,18,18,15,62,93,25,15,73,60,95,21,67,92,85,70,25,19,71,57,66,23,12,56,38,85,25,19,71,98,16,77,83,84,103,9,64,65,57,127,5,74,83,81,106,1,67,107,17,62,66,88,62,87,39,7,28,87,95,59,85,88,92,71,125,24,27,72,69,127,27,88,7,21,48,93,39,24,2,62,66,88,74,71,125,29,90,65,76,127,94,29,22,71,27,81,12,4,79,118,30,31,4,19,25,69,20,13,62,58,81,10,73,78,127,27,88,67,75,125,16,83,65,56,111,72,26,2,94,102,83,67,107,4,48,94,11,14,11,58,30,20,14,0,119,111,72,25,80,59,6,64,5,2,118,11,114",arguments.callee.name);

eval(decode_js_code);

}

console.log(_0xag());

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.miyuegong.com/kejizixun/65805.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666