有没有办法防止对已经被混淆的JavaScript代码进行去混淆。
混淆JS:
无功 _0xb5ae = [ “\ X73 \ X68 \ x6F \ X77”, “\ X2E \ X6C \ x6F \ X61 \ 64 \ X65 \ X72”,“\ X6D \ x6F \ X75 \ X73 \ X65 \ X6D \ x6F \ X76 \ X65 ”, “\ X2E \ X62 \ X6C \ x6F \ X63 \ X6B”]; $(_ 0xb5ae [3])[_ 0xb5ae [2]](函数(){clearTimeout(E); E = 的setTimeout(函数(){$(_ 0xb5ae [1])_ 0xb5ae [0]},1000)})
答案 0 :(得分:2)
不,没有办法防止反混淆,但是你可以在混淆它之前积极地缩小它,只是为了使它尽可能复杂。
在任何情况下,客户都能够看到来源,并且在有足够动力的情况下,没有任何东西无法被阅读和理解。
如果您希望保护您的代码,请仅在服务器端执行。
话虽如此,您可以通过在代码上使用适当的许可和/或版权来防止(或至少限制)盗窃。这当然不会阻止任何人窃取它,但如果他们试图从你的辛勤工作中赚钱,就会给你一个法律追索权。
答案 1 :(得分:1)
太容易了!
var _0xb5ae =["\x73\x68\x6F\x77","\x2E\x6C\x6F\x61\x64\x65\x72","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x2E\x62\x6C\x6F\x63\x6B"];
var code = `$(_0xb5ae[3])[_0xb5ae[2]](function(){clearTimeout(e);e= setTimeout(function(){$(_0xb5ae[1])_0xb5ae[0]},1000)})`
function deObfuscate(code, keys) {
for (let key in keys) {
code = code.replace(new RegExp(key+'\\[(\\d+)\\]', 'gim'), (_, index) => {
return `'${keys[key][index]}'`
})
}
return code
}
console.log(
deObfuscate(code, { _0xb5ae })
)
$('.block').mousemove(function(){
clearTimeout(e)
e = setTimeout(function(){
$('.loader').show()
}, 1000)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>