如何防止反混淆 JavaScript 代码

How to prevent deobfuscating JavaScript code

有没有办法防止对已经被混淆的 JavaScript 代码进行反混淆。

混淆JS:

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"];$(_0xb5ae[3])[_0xb5ae[2]](function(){clearTimeout(e);e= setTimeout(function(){$(_0xb5ae[1])_0xb5ae[0]},1000)})

不,没有办法阻止去混淆,但您可以在混淆之前积极地缩小它,只是让它尽可能复杂。

无论如何,客户将能够看到来源,并且在适当的动机下,没有什么是无法阅读和理解的。

如果您希望保护您的代码,请仅在服务器端执行它。

话虽如此,您可以通过对您的代码使用适当的许可 and/or 版权来防止(或至少限制)盗窃。这当然不会阻止任何人窃取它,但如果他们试图从您的辛勤工作中赚钱,您将获得法律追索权。

太简单啦!

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>