Как скрыть код JavaScript из источника просмотра

Feb 9, 2026
Инструкции
How to hide your JavaScript code

Если вы не принимаете меры предосторожности с вашим кодом JavaScript, вы проводите жизнь для всех, кто хочет его клонировать. Но если ваши процессы программирования являются более чем одним кликом, атакующие предпочли бы клонировать программное обеспечение конкурента. Боты и другие просвечители, расчесывающие Интернет для учетных данных AWS или Azure, обычно не беспокоится с запутанным кодом - информация о входе в следующем веб-сайте также можно использовать для моего биткойна и может быть собрана с меньшими усилиями.

Обизуемый JavaScript использовал комплекс. Однако процесс стал значительно проще в течение последних нескольких лет. Сегодня даже небольшие компании могут и должны защищать свой код от посторонних глаз. В некоторых случаях получение в безопасности - это просто вызов пакета Node.js.

Следующие шаги вводят обычно используемый JavaScript ObFuscator, а также посмотрите на несколько других тем, связанных с проблемой под рукой.

  • Лучшее антивирусное программное обеспечение
  • 15 Основные инструменты JavaScript

01. Регион версии

Наш JavaScript Obfuscator живет в среде выполнения узла. Давайте начнем, проверяя используемые версии. Ниже приведен выходные данные, предусматриваете состояние версии на вашей рабочей станции действительно используемой для следующих шагов:

 Tamhan @ Tamhan-ThinkPad: ~ $ Node --version
v8.12.0
Тамхан @ Тамхан-ThinkPad: ~ $ npm --version
6.4.1 

02. Установите программу

JavaScript-Obfuscator должен быть установлен в глобальный кэш сборки вашей рабочей станции. Вызывать NPM с -грамм Параметр и не забудьте предоставить права суперпользователя - фактический процесс развертывания должен быть выполнен за несколько секунд.

 Tamhan @ Tamhan-ThinkPad: ~ $ sudo npm Установить -G
JavaScript-Obfuscator.
[sudo] Пароль для Тамхана:
Отказ Отказ Отказ

+ javascript-obfuscator @ 0.18.1
Добавлены 103 пакеты из 162 авторов
в 4.4S 

03. Создать образец

Тестирование запутывания работает лучше всего, если у нас есть какой-то «реальный» код. Итак, давайте начнем с небольшой веб-страницы HTML. Он загружает файл JavaScript под названием Worker.js, объявляет кнопку и содержит небольшой бит встроенных скриптов. Когда он загружен в браузере, нажмите кнопку, чтобы показать текстовое поле.

 & lt; html & gt;
& lt; body & gt;
& lt; script src = "worker.js" & gt; & lt; / script & gt;
& lt; скрипт & gt;
Функциональный работник () {
оповещение (Доктор ());
}
& lt; / script & gt;
& lt; Кнопка типа = "Кнопка" onclick = "работника (
) "& gt; нажмите Me! & lt; / button & gt;
& lt; / body & gt;
& lt; / html & gt; 

04. Добавить код

Working.js начинается со строковой переменной. Они являются классической целью атаки - если ром должен быть декодирован, ассемблер обычно начинается, ища таблицы, содержащие строковые последовательности. Кроме того, шифрование выполняется с использованием набора переменных с очень «говорящими» именами.

 VAR MyString = "Привет из будущего ПЛК"

Функция dottetrick () {
Вар Чифрат;
Chiffrat = Rot13 (MyString);
вернуть чифрат;
} 

05. Реализировать шифрование

Поскольку это не предназначено в качестве шифрования 101, мы должны осесть на сравнительно простой заменении шифра. ROT13 не сложно, но он может быть запрограммирован довольно доброго. Реализация Dsoares Поставляется с множеством «говорящих» переменных и обеспечивает множество пищи для нашего обфускатора.

 Функция ROT13 (STR) {
var re = new regexp ("[a-z]", "i");
var min = 'a'.charcodeat (0);
var max = 'z'.chararcodeat (0);
CANCE VAR = 13;
VAR результат = "";
str = str.touppercass ();
  
для (var i = 0; i lt; str.length; i ++) {
Результат + = (Re.test (str [I])?
String.fromCharCode ((str.charcodeat
(i) - Min + Factor)% (MAX-MIN + 1)
+ мин): ул [I]);
}
возвратный результат;
} 

06. Первое запутывание

Выполнение запутанного прогона кода просто. Вызывать JavaScript-Obfuscator. И пройдите в точку, чтобы сказать программу работать над всеми файлами, найденными в текущем рабочем каталоге. Это показывает результат на рабочей станции автора IBM:

 Tamhan @ Tamhan-ThinkPad: ~ / futurebfushat /
код $ Javascript-Obfuscator. 

07. Перенаправить выход

Выключение файлов непосредственно в папку контейнера неэффективно, поскольку имена должны быть изменены до того, как они могут быть использованы. Лучший способ включает использование выход параметр. Если JavaScript-Obfuscator. Находит его, программа генерирует подпапку в текущем рабочем каталоге и сбрасывает результаты его труда.

 Tamhan @ Tamhan-ThinkPad: ~ / futurebfushat / код $
JavaScript-Obfuscator. --output ./obfusca

08. Проанализировать результаты

How to hide your JavaScript code: Results

Это ужасно, но это может быть хуже

Погрузитесь в папку «ObfusCa» и откройте новую версию Worker.js, чтобы пировать свои глаза на мерзость, которая показана сопровождающим этот шаг. Форматирование кода было плохо настроено. Имена методов, однако, остались прежними, поскольку они необходимы для внешних вызовов. Кроме того, струны теперь сидят в массиве, где злоумышленник может их удобно собирать.

 var a0_0xb9e2 = ['Hello \ x20from \ x20future
\ x20plc ',' [A-Z] ', «Тест», «Charcodeat»]; 

09. Предотвратить сбор строки

JavaScript-Obfuscator поставляется с выбором алгоритмов String-Manglith, которые можно настроить с помощью - Скодирование массива Отказ Имейте в виду, что выходной каталог должен быть опустошен перед каждым вызовом, потому что забывание для этого приводит к «рекурсивному» запущению выходных файлов из предыдущего запуска.

 Tamhan @ Tamhan-ThinkPad: ~ / futurebfushat / код $
JavaScript-Obfuscator. --output ./obfusca
Arring-Array-кодировка Base64 

10. Посмотрите на результаты снова

На данный момент наш выход Obfuscator выглядит по-другому - массив в верхней части файла сейчас гораздо менее читабелен. Это, однако, не решает все проблемы. Если вы выполните несколько циклов обфускации, вы в конечном итоге в конечном итоге окажусь от Mark-Up, аналогично одним, сопровождении этого шага:

 var a0_0x31e5 = ['bgvuz3Ro', 'dgvzda ==', '
Znjvbunoyxjdb2rl ',' y2hckknvzgvbda == ','
dg9vchblcknhc2u = '];
Отказ Отказ Отказ
Отказ Отказ Отказ
var mystring = 'hello \ x20from \ x20future \ x20plc' 

11. Понимание рандомации

Обитаторы работают в поле давления между высокой производительностью и защитой кода. Один из способов решения проблемы включает в себя «радужные» элементы. Время выполнения - дорогие запутывания не добавляются ко всем узлам, а только для подмножества. Обнаружение, если узлы воздействуют или нет, обычно выполняются через генератор случайных чисел, чувствительность которого можно настроить.

12. Иди за струнами

Вышеупомянутый генератор случайных чисел выделяет номера от нуля до одного. Если число больше порогового значения, модификация не будет иметь место. Параметр stringarraythreshold. Для значения одного означает, что все номера меньше порогового значения, гарантируя, что каждая и каждая строка будет разорваться.

 Tamhan @ Tamhan-ThinkPad: ~ / futurebfushat / код $
JavaScript-Obfuscator. --output ./obfusca
ASTRING-ARRAY-INCODING BASE64
--stringArraythreshold 1 

13. Внести случайный код

Инструменты анализа, такие как прибыль Jsnice от небольшого базы кода. Учитывая, что JavaScript-Obfuscator перерывает код в AST в любом случае, ничто не говорит против вставления «Кода мусора» на лету. Поскольку эта функция добавляет значительное bloat, разработчики должны активировать его вручную по двум параметрам, показанным рядом с этим:

 --dead-код-инъекция & lt; boolean & gt;
--dead-код-инъекционный порог & lt; номер и gt; 

14. Наслаждайтесь хаосом

Запуск обфускатора с обоими --dead-код-инъекция правда и --dead-код-впрыск-порог 1 Установить приводит к файлованию около 2,5 кБ. Попытка предаться кодексу приводит к почти неустойчивой стенке в основном тавтологии JavaScript.

15. Агрессивно модифицировать поток программы

Перерыв кода в AST обеспечивает глубокие преобразования. Установка ControlFlowFlateing. Атрибут true сообщает программу, что она может вызовывать вызовы функций. Это приводит к значительному расширению генерируемого кода - имейте в виду, что результаты могут взять на себя достижение на 150 процентов.

16. раздражают отладчик

Артефакты от отладки являются величайшим подарком в мире хакерам. Несколько вызовов на Console.log () и его друзья могут дать атакующим ценную информацию о том, что происходит внутри программы - хороший пример будет показан фрагментом:

 Функция Доктор ()
{
Вар Чифрат;
Console.log («Подготовка к шифрованию
chiffrat ");
Chiffrat = Rot13 (MyString);
Console.log («возвращение Chiffrat»);
вернуть чифрат;
} 

17. Оцените технические проблемы

Мы можем попытаться повторно запугивать программу с помощью команды ниже. Он отключает функцию кэширования строки и должен отключить консольную регистрацию через перенаправление.

 Tamhan @ Tamhan-ThinkPad: ~ / Desktop /
Deadstuff / 2018nov / Futurebfuscate / Code $
JavaScript-Obfuscator. --output ./obfusca
- строгающий массив, кодирующий ложь
--disableConsoleOutput true 

18. Играть в игры кошка и мыши

Поставщики ObFuscator и браузера борются с длинной и горькой битвой о функции отладчика. Благодаря этому, «агрессивные» меры, такие как перенаправление консоли прерывателей по потоку программы, показанные сопровождающим этот шаг, обычно не работают долго.

 Отладка: ложь,
DebugProtectionInterval: false, 

19. Быстрый онлайн запутанность

Установка всего пакета Node.js для запутывания одного или двух файлов бессмысленно. Посещение Obfuscator.io. Чтобы получить доступ к онлайн-версии программы, которая живет в вашем браузере. Проверьте и объединитесь под основным входом, позвольте вам модифицировать поведение программы, как указано на шагах выше.

20. Узнайте больше

How to hide your JavaScript code: Learn more

Нажмите, чтобы увидеть все параметры, которые вам понадобятся

Команда разработчика поддерживает относительно подробную документацию, объясняющую способ, которым различные параметры командной строки взаимодействуют друг с другом. Просто посетите голова здесь Если вывод «Краткая помощь», показанная выше, не поможет вам достичь своей цели.

21. Смертный враг обфускатора

How to hide your JavaScript code: JS Nice

JS Nice - это простой способ сделать ваш код нечитаемым

ETH Zurich предоставляет услугу De-pushation, размещенной в jsnice.org. Отказ Он использует нейронные сети, а база данных знаний состоит из существующего кода для определения имени переменных. Хотя сплющая форматирование обычно работает довольно хорошо, некоторые имена - такие как pixelsizetargetmax. В процедуре шифрования сопровождая этот шаг - может быть скорее забавным.

 Функция ROT13 (PL $ 120) {
/ ** @type {! Regexp} * /
var insuffedregexp = Новое Regexp
(A0_0x395d («0x1»), «I»); вар
pixelsizetargetmax = "A" [«Charcodeat»] (0);
var zerosizeMax = "z" [«Charcodeat»] (0);
/ ** @type {номер} * /
var minh = 13;
/ ** @type {string} * /
var out = ""; 

Generate, the award winning conference for web designers, returns to NYC on April 24-25! To book tickets visit www.generateconf.com 

Генерация, наградная конференция для веб-дизайнеров, возвращается в NYC 24-25 апреля! Чтобы забронировать билеты www.generateconf.com.

Эта статья была первоначально опубликована в выпуске 283 журнала Creative Web Design Веб-дизайнер Отказ Купить проблему 283 здесь или же Подписаться на веб-дизайнер здесь Отказ

Статьи по Теме:

  • 9 из лучших JavaScript Frameworks
  • Выявлено: последние тенденции JavaScript
  • 5 удивительных apis javascript

Инструкции - Самые популярные статьи

Остановите боты с помощью Google recaptcha

Инструкции Feb 9, 2026

(Кредит на изображение: будущее) Сохранение ботов всегда - это ци..


Добавить фильтры SVG с CSS

Инструкции Feb 9, 2026

SVG составлял с начала 2000-х годов, и все же есть еще интересные способы, к..


Создать облака с foolefx для 3ds max

Инструкции Feb 9, 2026

Этот пошаговый руководство установлен, чтобы показать, как выполнить �..


10 советов для моделирования твердых поверхностей

Инструкции Feb 9, 2026

Это изображение Великого Восточного парохода Брунеля с 1858 года находи..


Создать реалистичный фантастический рыцарь

Инструкции Feb 9, 2026

В этом семинаре мы покажем вам, как покрасить рыцарь, используя Фо�..


Как создать красочные миры, которые рассказывают историю

Инструкции Feb 9, 2026

Представные сцены, которые оставляют вас с чувством удивления, застав�..


Как лепить убедительные глаза в Zbrush

Инструкции Feb 9, 2026

При лечении реалистичного 3D человеческого глаза, чтобы добавить в сво�..


Создать оживленную городскую сцену в Illustrator

Инструкции Feb 9, 2026

Лучший город - это оживленный город, но эта занятая атмосфера не легкая..


Категории