Как предотвратить деобфускацию кода JavaScript

Есть ли способ предотвратить деобфускацию кода JavaScript, который уже был запутан.

Запутанный JS:

вар _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)})


person Hitesh Misro    schedule 30.11.2016    source источник
comment
да, добавьте комментарий //Please be kind not to try to de-obfuscate this перед своим кодом, и все будет хорошо.   -  person Kaiido    schedule 30.11.2016
comment
@Kaiido Это тоже было скрыто!   -  person Hitesh Misro    schedule 30.11.2016
comment
Обфускатор преобразует исходный код JavaScript в запутанный и совершенно нечитаемый вид, предотвращая его анализ и кражу. Я называю это ложной рекламой... Некоторые за это платят!!??   -  person xShirase    schedule 30.11.2016


Ответы (2)


Нет, нет способа предотвратить деобфускацию, но вы, вероятно, могли бы агрессивно минимизировать ее, прежде чем запутывать, просто чтобы сделать ее как можно более сложной.

В любом случае клиент сможет увидеть первоисточник, а при должной мотивации нет ничего, что нельзя было бы прочитать и понять.

Если вы хотите защитить свой код, выполняйте его только на стороне сервера.

При этом вы можете предотвратить (или, по крайней мере, ограничить) кражу, используя соответствующую лицензию и/или авторские права на свой код. Это, конечно, не помешает никому его украсть, но даст вам возможность обратиться в суд на случай, если кто-то попытается заработать на вашем тяжелом труде.

person xShirase    schedule 30.11.2016
comment
хорошо, спасибо за ваш ответ! - person Hitesh Misro; 30.11.2016
comment
@HiteshMisro Нет проблем. Некоторые компании заходят очень далеко, пытаясь сделать свой JS нечитаемым, но это бесполезная попытка. Если то, что вы пытаетесь защитить, настолько ценно, кто-то найдет время, чтобы понять код. Сообщение отредактировано, чтобы предложить законные альтернативы - person xShirase; 30.11.2016

Слишком просто, бро!

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>

person synthet1c    schedule 30.11.2016