Search
Write a publication
Pull to refresh

Comments 9

В этой статье мы познакомимся, как минимум, с крутым словом

лабараторию

виртулизация

А что вы хотели от волшебника, у которого НИ ОДНОЙ книги нет, в которой "JavaScript" было бы написано без ошибок! /s

Попробуйте теперь взять получившийся код и деобфусцировать его

getData(n) - заменяем изменяем на результат этой функции, а имена переменных и функций можно вручную переименовывать в зависимости от контекста, так как это не особо отличается от обычной минификации, от любого бандлера

Приходилось по кое-какой нужде так делать, ничего сложного, пара часов и готово. А если код изначально использует много объектов, классов и тд, то там восстанавливать вообще нечего, так как обфускатору все аксессоры (филды, методы, геттеры, сеттеры и тд) нужно или оставлять в том же виде, чтобы не поломать ничего, или через тот же механизм getData, который довольно просто вернуть в исходное состояние.

Хороший обфускатор должен что-то заинлайнить, всё переименовать, простые операции заменить на много непонятных так, чтобы результаты были теми же и тд, а потом ещё это и хорошенечко зашифровать в eval, вызов которого тоже обфусцировать.

Так как мы говорим про JavaScript, то действительно хорошая обфускация просто убьёт производительность и размер вашего приложения, при том, что кто надо, тот всё равно вернёт код в приемлемое состояние. Как неплохой вариант действительно важный код переписать под WebAssembly, так восстанавливать код из ассемблера не самое приятное занятие, хоть и возможное + есть вероятность, что работать побыстрее будет. Пора уже смирится - всё, что вы отдаёте пользователям, становится общедоступным. Свои крутые алгоритмы переносите на сервер и не надо будет думать, как бы вам код обфусцировать, чтоб конкуренты не спёрли.

Вместо кастомной виртуалки действительно можно заюзать WebAssembly - для него нет хороших декомпиляторов. Но с browser API и DOM там удобно не повзаимодействуешь.

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

Уверяю вас, это не абракадабра, а JavaScript! И выполняет он те же действия. Можете попробовать запустить код в консоли тут .

Попробовал - не получилось. Возможно потому что ссылка кривая.

Подправил. Можете хоть тут на хабре запустить)

Я просто пишу лапше-г-но-код с кривыми названиями переменных. Больно к нему возвращаться через месяц или позже. Но тем кто увидет его в первые кровь из глаз гарантирована 😂 Но это для пет проектов норм, в компании такую тактику вряд-ли оценят)

Sign up to leave a comment.

Articles