Что?! При слове обфускация к тебе на ум приходят неприличные слова? Если да, то тогда тебе сюда. В обратном случае, продолжаем дальше читать статью. Обфусцировать (язык можно сломать), мы будем с целью затруднения изучения/понимания javascript-кода.
Для примера, обфускации подвергнется следующий код:
alert('2coders.ru')
В результате обфускации мы получим:
<script>
(function(O,o){o(O(97,108,101,114,116,40,39,
50,99,111,100,101,114,115,
46,114,117,39,41))})(String.fromCharCode,eval)
</script>
Но, это в конце, а пока что у нас все еще предельно понятный alert(‘2coders.ru’). Первым делом, переведем символы в их ASCII эквивалент:
a — 97
l — 108
e — 101
r — 114
t — 116
Ну и т.д.
После преобразования, alert(‘2coders.ru’) будет выглядить вот так:
97,108,101,114,116,40,39,50,99,111,100,101,114,115,46,114,117,39,41
Уже лучше, но нам нужно как-то перевести ASCII значения обратно, и запустить код. В этом нам помогут: функция eval() и метод fromCharCode().
<script>
eval(String.fromCharCode(97,108,101,114,116,40,39,50,99,111,
100,101,114,115,46,114,117,39,41));
</script>
Приведенный код, эквивалентен alert() c сообщением 2coders.ru. Попробуйте протестировать его у себя, если непонятно. Идем дальше и еще усложняем код:
<script>
(function(O,o){o(O(97,108,101,114,116,40,39,50,99,111,100,101,114,115,46,114,117,39,41))})(String.fromCharCode,eval);
</script>
Опять у нас все тот же alert(‘2coders.ru’), но уже в менее понятном виде. Создадим, небольшую форму и функцию, чтобы не пришлось все преобразовывать ручками.
<script type="text/javascript">
function obf() {
var str = document.getElementById('text').value;
var a = [];
(''+str).replace(/./g ,function(b){a.push(b.charCodeAt(0))});
document.getElementById('container').innerHTML = '<script>(function(O,o){o(O('+a.join(',')+'))})(String.fromCharCode,eval)</script>';
}
</script>
<div id="container">
</div>
<textarea cols="50" rows="10" name="text" id="text"></textarea> <br />
<input type="submit" name="submit" value="Поехали!" onclick="obf()"/>
Вводим в форму наш javascript код, и после магии обфускации получаем, что-то мало понятное и непохожее на то, что мы вводили ранее. Качаем готовую версию отсюда.