如何防止反混淆JavaScript代码

时间:2016-11-30 06:27:30

标签: javascript deobfuscation

有没有办法防止对已经被混淆的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)})

2 个答案:

答案 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>