Невероятный JavaScript
Насколько запутанный JavaScript вы можете написать? Хотя
В блоге Shadowflux образчик хорошо запутанного кода с объяснением работы:
($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+
($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__
[_+~$]+$_[_]+$$](_/_)Выглядит довольно страшно, но, если разобраться, ничего сложного. Напоминает старый добрый Perl.
Комментарии 7
Должно понравиться любителям «закрытого открытого кода» :)
1) Идею первым предложил Йосуке Хасегава в этом посте http://sla.ckers.org/forum/read.php?2%2C15812%2Cpage=14 (1.06.2009)
2) Потом был организован первый конкурс по небуквенноцифровому JS: http://sla.ckers.org/forum/read.php?24%2C28687 .Его целью ставилась задача сделать то же, что и Хасегава, но только КАК МОЖНО МЕНЬШЕ. В качестве браузера был взят FF как наиболее продвинутый.
3) Ещё позже был организован второй конкурс, впоследствии получивший название «Великая стена Javascript». Вопрос ставился так: сколько РАЗЛИЧНЫХ символов нужно использовать, чтобы добиться выполнения удаленного JS. Этот конкурс здесь: http://sla.ckers.org/forum/read.php?24%2C32930
4) Были ещё несколько интересных конкурсов, посвященных этому — ссылки на них в том же разделе того же форума.
5) Потом начали появляться соответствующие обфускаторы и деобфускаторы. Там, где используются переменные, для деобфускации можно использовать уже созданные
6) В этом блоге уже появлялись ссылки на эту технику /all/2534 Там ты привёл 92 байтный код Э.Велы, здесь ты приводишь уже 106 байтный код М.Хайдериха, потому что его разбирает указанный автор, сам взявший его из презентации Р.Барнета 2011 г. (который, кстати, не указал источники) http://www.modsecurity.org/documentation/X …
7) Я видел в наших интернетах неоднократные восхищения по поводу того, как и почему этот наркотик работает, но не видел упоминания, в чем состоит главная идея: в выявлении минимальной формы этого кода или в преодолении Великой
Спасибо за историю :)
Это я вспомнил, но не смог найти.
и в процессе «декодирования» ломается работоспособность кода