Что-то не вижу — быть или не быть?
Слово «выглядит» в подписи ко скриншоту выше упомянуто неслучайно — программа написана так, что видимое — только надводная часть айсберга.
Уже в те далёкие времена, когда я только ещё начинал писать на ДжаваСкрипте, программисты на форумах задавались вопросом можно ли
Позже, когда производительность интерпретаторов ДжаваСкрипта стала стремительно повышаться, появились всяческие обсуфкаторы, сильно запутывающие программу за счёт удаления форматирования, внесения шума, замены имён переменных и функций и сжатия по словарю поверх всех замен.
С тех пор эти инструменты застыли примерно в том же состоянии, но теперь, мне кажется, в этом деле наметился прорыв.
Некто ФейкЮникод, разместил скрытое послание внутри суррогатных пар Юникода.
Что такое суррогатные пары расписывать не буду, статей на эту тему предостаточно, главное, что их не видно и они могу быть частью (кроме первого символа) любого идентификатора ДжаваСкрипта.
Я попробовал использовать способ с суррогатными парами, чтобы скрыть монолог Гамлета внутри программы на ДжеЭсФаке (способ написания программ на ДжаваСкрипте, когда не используются
Получилась адская обфускация, глядя на которую и не заподозришь, что она после запуска выведет в консоль полтора килобайта английского текста.
Комментарии 16
Так и есть :) Но в данном случае обфускацию можно устроить так, что она и
Теперь уберите факджээс, представьте себе обычную программу, где на первый взгляд всё нормально — никакой обфускации. Никто же в таком случае деобфускаторы не запускает. Но на деле часть программы спрятана, а некоторые переменные называются так же. Если не вглядываться, то ничего не заметно, если вглядываться, то неясно как работает. Думаю большинство вглядываться не будет.
Впрочем, все эту уловки, скорее всего, не нужны будут, когда в бразузеры строят средства для защиты контента. Думаю защищать можно будет не только аудио и видео, но и код.
один раз анализ займёт больше времени, возможно. типичное security through obscurity. в чём
В Эдже весь этот мусор из кусков суррогатных пар вполне заметен. Особенно в оригинальном твите (его там разносит в полную порнографию).
А вот это уже гораздо печальнее :(
Комментарий для zg.livejournal.com:
Для меня любое движение после застоя — прорыв. Тут как раз движение после застоя.
Комментарий для zg.livejournal.com:
Давайте пофантазируем. Предположим вы никогда не знали о такой возможности. Смотрите на скрипт, которыйоткуда-то скопирован и вам надо кое-что в нём поправить, но вы в упор не видите в нём того места, которое надо править. Какая следующая мысль — «о, тут зашифровано что-то в суррогатных парах» или «чёрт, наверное не всё скопировал, но что-то не вижу где остальное»?
Вкупе с остальными методами этот мог бы серьёзно поднять стоимость обратной разработки. Мог бы, если бы не Эдж.
я бы посмотрел содержимое в хексе.
Вспоминается случай, когда я
Вот
Вообще, при поддержке кодовых баз жирных коммерческих проектов любое отклонение от конвенций воспринимается однозначно как жуткое неуважение к коллегам, даже саботаж. Не в интеллектуальные игры играемся, а деньги зарабатываем. В
Комментарий для Евгения Степанищева:
Ну-ну.
«Странный комментарий», говорите.
Мне однажды похожая «шутка» стоила срыва крупного milestone. Ревьюеры со стороны заказчика нашли в коде хитро упрятанную песенку, и завернули весь проект. Полный аудит кода за неделю до сдачи обошёлся очень дорого.
кодер-то позабавился, да. В полный рост. И, действительно, крайне странно, что заказчик не оценил такой шикарный юмор.
А
Интересная история, конечно, но мне
Странный ваш коммент ещё и потому, что кажется, что вы считаете я не понимал что делаю или никогда не видел «кодовых баз жирных коммерческих проектов».
А уж то, что вы шутников сразу к стенке ставите с вызовом к начальству, чести вам не делает. Потому, что проблему надо хотя бы попытаться решить на своём уровне и начать с того, чтобы человек понял проблему. Если бы такой руководитель попался мне, ему либо пришлось измениться, либо я бы его уволил.
Комментарий для PastorGL:
Пока редактировал, испортил фразу. Должно быть «начать с разговора, чтобы человек понял проблему».