Blog. Just Blog

Распаковка и расшифровка скриптов JavaScript

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Эта статья - дополнение к статье про деобфускацию скриптов. Здесь будут рассмотрены основные принципы шифровки и упаковки, слабые места защит, способы ручного снятия, а также универсальные инструменты для автоматического снятия упаковщиков и навесной защиты со скриптов JavaScript. В последнее время все чаще исходный код скриптов шифруется или пакуется. Этим начали увлекаться Яндекс, DLE и другие популярные проекты, а красивые байки про "заботу о пользователях", "экономию трафика" и прочую чушь выглядят очень смешно. Что ж, если кому-то есть что скрывать, значит наша задача вывести их на чистую воду.

Начнем с теории. Из-за особенностей выполнения JavaScript все шифровщики и упаковщики, несмотря на их разнообразие, имеют всего два варианта алгоритма:
  1. var encrypted='зашифрованные данные';
  2. function decrypt(str) {
  3.   // функция расшифровки или распаковки
  4. }
  5. // Выполнить расшифрованный скрипт
  6. eval(decrypt(encrypted));
или как вариант:
  1. var encrypted='зашифрованные данные';
  2. function decrypt(str) {
  3.   // функция расшифровки или распаковки
  4. }
  5. // Вывести на экран расшифрованные данные
  6. document.write(decrypt(encrypted));
Второй способ чаще всего используется для защиты исходного html-кода страницы, а также разными троянами для внедрения в страницу вредоносного кода, например скрытого фрейма. Оба алгоритма могут комбинироваться, "навороченность" и запутанность расшифровщика может быть любой, неизменным остается только сам принцип.

В обеих случаях получается, что функциям eval() и document.write() передаются полностью расшифрованные данные. Как их перехватить? Попробуйте заменить eval() на alert(), и в открывшемся MessageBox'е вы сразу увидите расшифрованный текст. Некоторые браузеры позволяют копировать текст из MessageBox'ов, но лучше воспользоваться таким вот полуавтоматическим декодером:
  1. <html>
  2. <head><title>JavaScript Decoder</title></head>
  3. <body>
  4.  
  5. <script type="text/javascript">
  6. // Функция записи в лог результатов расшифровки
  7. function decoder(str) {
  8.   document.getElementById('decoded').value+=str+'\n';
  9. }
  10. </script>
  11.  
  12. <!-- Окно лога -->
  13. <textarea id="decoded" style="width:900px; height:500px;"></textarea>
  14.  
  15. <script type="text/javascript">
  16. // Сюда вставить зашифрованный скрипт, предварительно
  17. // заменить в нем все вызовы eval() и document.write() на decoder().
  18. </script>
  19.  
  20. </body>
  21. </html>
Для примера возьмем какой-нибудь скрипт с Яндекса, посмотрев исходный код видим что-то нездоровое:

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(
c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!
''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e
){return r[e]}];e=function(){return'\w+'};c=1};while(c--)if(k[c])
p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c]);return p}('$.1e
.18=8(j){3 k=j["6-9"]||"#6-9";3 l=j["6-L"]||".u-L";3 m=j["6-L-17"]
||"";3 n=j["1d"]||0;$(5).2(".6-9").14("7");$(5).2(".6-9").Z("7",8(
){3 a=$(5).x();3 o=$(5).x();3 h=$(5).B("C");$(5).v("g-4");$(5).16(
$(k).q());3 t=$(o).2("15");3 c=$(o).2(".b-r");3 d=$(o).2(".b-12");
[остальной такой же бред отрезан]

Сразу скажу, что этот скрипт обработан JavaScript Compressor, его легко узнать по сигнатуре - характерному названию фукнции в начале скрипта. Копируем целиком исходный текст скрипта, заменяем первый eval на decoder, вставляем в декодер и сохраняем его как html-страничку.
  1. <script type="text/javascript">
  2. // Сюда вставить зашифрованный скрипт, предварительно
  3. // заменить в нем все вызовы eval() и document.write() на decoder().
  4. decoder(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e...
  5. </script>
Открываем ее в любом браузере и видим, что в textarea сразу появился распакованный скрипт. Радоваться пока рано, в нем убраны все переносы строчек и форматирование кода. Как с этим бороться написано в статье про деобфускацию.

Второй пример. Вот html-страничка, накрытая программой HTML Protector. Это страница, демонстрирующая возможности программы, поэтому там задействованы все опции: блокировка выделения и копирования текста, запрет правой кнопки мыши, защита картинок, скрытие строки состояния, шифрование html-кода и т.д. Открываем исходный код, смотрим. В самом верху уже знакомый нам document.write и зашифрованный скрипт. Запускаем его через декодер, получаем функцию расшифровки основного содержимого:
  1. hp_ok=true;function hp_d01(s){ ...вырезано... o=ar.join("")+os;document.write(o)
Заменяем в функции последний document.write на decoder и вставляем после нее все три оставшихся зашифрованных скрипта:
  1. <script type="text/javascript">
  2. // Сюда вставить зашифрованный скрипт, предварительно
  3. // заменить в нем все вызовы eval() и document.write() на decoder().
  4. hp_ok=true;function hp_d01(s){ .... o=ar.join("")+os;decoder(o);
  5. hp_d01(unescape(">QAPKRV%22NCLEWC ....
  6. hp_d01(unescape(">QAPKRV%22NCLEWCEG? HctcQa ...
  7. hp_d01(unescape(">`mf{%22`eamnmp? !DDDDDD %22v ...
  8. </script>
Для удобства в статье скрипты приводятся не полностью, вы же должны копировать их целиком. Открываем декодер в браузере и видим защитные скрипты, добавленные программой, и расшифрованный исходный текст страницы. Для удобства можно расшифровывать только третий скрипт, в котором содержится html-код страницы. Вот и вся защита. Как видите, ничего сложного. Аналогично снимаются и другие защиты html-страниц.

От ручной расшифровки перейдем к автоматической. Для снятия защит первого типа я немного модифицировал уже известный вам скрипт Beautify Javascript и откомпилировал его в exe-файл. Он без проблем справляется с большинством виденных мной защит и упаковщиков JavaScript.

Eval JavaScript Unpacker 1.1 (pass: manhunter.ru)Eval JavaScript Unpacker 1.1 (pass: manhunter.ru)

Eval.JavaScript.Unpacker.1.1-PCL.rar (12,124 bytes)

Для более сложных случаев придется пускать в ход тяжелую артиллерию. Это бесплатный проект Malzilla, предназначенный для исследования троянов и другого вредоносного кода. Поскольку все программы, предназначенные для защиты авторского права, являются однозначно вредоносными, Malzilla поможет нам в борьбе с ними. Качаем последнюю версию (на сегодняшний день это 1.2.0), распаковываем, запускаем. Открываем вторую вкладку Decoder, в верхнее окно вставляем код зашифрованного скрипта, нажимаем кнопочку Run script.

Malzilla за работой
Malzilla за работой

В папке eval_temp складываются все результаты выполнения функций eval(), в том числе и промежуточные. Их можно посмотреть, нажав на кнопку Show eval() results, текст откроется в нижнем окне. Его можно скопировать, вставить в верхнее окно и сразу же отформатировать нажатием кнопки Format code. Кроме декодера Malzilla имеет еще множество инструментов и настроек, позволяющих легко снять любую защиту со скриптов JavaScript.

Скрипт успешно расшифрован и отформатирован
Скрипт успешно расшифрован и отформатирован

Также можно обратить внимание на еще один бесплатный инструмент для работы с зашифрованными скриптами - FreShow. Функций в нем поменьше, но вполне имеет место быть. С офсайта можно скачать демонстрационный ролик, показывающий пример работы с программой.

Как видите, нет ничего сложного в снятии защиты со скриптов JavaScript и с html-страниц. Вы все еще продолжаете защищать свои поганые "аффтарские права"? Тогда мы идем к вам!

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 75412 | Комментариев: 78

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
artyr (22.10.2016 в 04:13):
Спасибо огромное за статью! А то никак не мог поменять настройки модуля из-за зашифрованности js, Malzilla меня спасла.
ManHunter (09.10.2015 в 13:50):
Выйди в окно, придурок, не засоряй собой генофонд планеты.
asd (09.10.2015 в 13:22):
ШЛЯПА СТАТЬЯ!!! И ШЛЯПО ПРОГИ!!!! АФТОР ВЫПЕЙ ЧОНИТЬ ИЛИ УБЕЙСЯ ОБ ЧОНИТЬ!!!!
Михаил (08.07.2015 в 15:38):
Обратиться к сожалению не к кому, придётся как то выкручиваться самому, скрипт обновляется довольно таки часто и защита постоянно меняется. А без него никуда и альтернативы у него тоже нет. Буду лопатить значит кучи мусора в гугле. Данная статья дала возможность продвинуться на 9 шагов из десяти к цели, последний шаг растянется на недели) Ещё раз спасибо и всего вам наилучшего.
ManHunter (08.07.2015 в 15:16):
Напоминает "я не умею водить машину, покажите мне педали". Результат предсказуем - до первого столба. Поэтому и совет один: обратиться к тем, кто умеет.
Михаил (08.07.2015 в 14:55):
Опыта просто совсем никакого в таком деле не имеется. Может есть ключевые слова какие то, по которым стоит поискать  место отвечающее за безопасность? Буду благодарен за любой совет в данном направлении.
ManHunter (08.07.2015 в 12:57):
Только глазами. Других способов нет и быть не может.
Михаил (08.07.2015 в 12:52):
Статья очень познавательная. Большое спасибо за неё автору.
Но есть вотпрос, вот скрипт приведёт в читабельный вид, а как определить место  которое отвечает в нём за проверку защиту. Чтоб удалить жто место и он стал фри.
жумабай (19.06.2015 в 18:43):
отличная статья.давно искал где,как расшифровать скрипты, а то
появились типа Абу и.т.д. умельцы со своими зараженными скриптами.
спасибо!
Ольга (06.07.2013 в 19:05):
Вот спасибо!!!! Очень-очень полезная статья, и главное как вовремя я ее нашла)))) За три секунды решила проблему как убрать из модуля ненужную ссылку.
фира (22.01.2013 в 17:34):
а может ли вместо eval() написанно event?
LikeThisBlog (21.01.2013 в 10:39):
Видимо чекер лажанулся. Просто мои познания в js в крайней степени минимальны, по сему и приходится доверять подобным сервисам, которые могут выдавать ложные срабатывания. =/
В любом случае, спасибо за ответ. ManHunter, всегда приятно читать Ваш блог. ;)
ManHunter (19.01.2013 в 20:22):
Это вообще ничем не упаковано, даже обфукскации нет. Максимум что сделано - просто убраны переносы строк. Остальное целиком и полностью какие-то математические расчеты, похоже на модификацию какой-то исходной картинки и последующий ее вывод на страницу.
LikeThisBlog (19.01.2013 в 20:12):
Озадачился тут расшифровкой одного интересного кода. По затее это вроде б как некая модификация либы StackBlur одним персонажем. При подключении либы к сайту, решил чекнуть её через http://sitecheck.sucuri.net/scanner выдало предупреждение о вложенной обфускации кода, есессно, сия "модификация" была послан нах и взята с офсайта, но любопытство взяло верх, захотелось выяснить что именно зашифрованно в либе. Начал рыть инет, нарыл туеву кучу онлайн говносервисов, которые ничего не смогли сделать, потом вспомнил о блоге ManHunter`а. =) Попробовал Unpackerom, результата не принесло. =( Решил написать сюда. В общем, вопрос так и остаётся открытым, чем это запаковано?? Линк на PasteBin - http://pastebin.com/CgUXYjFL
Анрейко (22.10.2012 в 01:49):
Malzilla Помогла моментально!!)))) очень хороша
Ilya (21.10.2012 в 21:14):
Спастбо большое, прекрасная статься очень помогла мне!, благодарю!
Spektrum (17.08.2012 в 21:26):
Очень интересная статья.Вы мне очень помогли.Респект!!!
Виталий (01.08.2012 в 02:26):
http://use.pp.ua/code/ сервис шифрования
-Kaizer- (29.07.2012 в 06:24):
Огромное спасибо!
Все получилось, дешифровал и деобфусцировал скрипт, работает! :)
ManHunter (24.07.2012 в 17:46):
Ну так и не качай ничего, не мне же надо, а тебе.
tun (24.07.2012 в 17:27):
а тройнец то лежит)
андр. (30.03.2012 в 23:03):
а чё за тип?

фигня такая же..ток не могу понять как раскодировать
ManHunter (12.01.2012 в 16:58):
Это не скрипт, а набор букв.
Gwynbleidd (12.01.2012 в 16:57):
FFE51C7BFE5C849FFE9106EA4CD  подскажете чем ето ява скрит кодирован? и как розкодировать зарание благодарен
Алексей (23.07.2011 в 19:44):
Хотел бы узнать можно ли скрипт, перенастроить? И кто это может сделать?
ManHunter (18.01.2011 в 23:34):
Здесь ничего не удаляется. Качай браузером и будет тебе счастье.
AK (18.01.2011 в 23:25):
Не качается Unpacker :(
Удален?
Алексей (18.01.2011 в 11:37):
очень жаль
ManHunter (18.01.2011 в 07:23):
Не мог бы.
Алексей (18.01.2011 в 06:21):
Здравствуйте.
Не могли бы Вы немного доработать Eval JavaScript Unpacker, чтобы можно было его использовать в командной строке, примерно в виде:
eval.javascript.unpacker.exe in=input-file.js out=output-file.js

https://github.com/rhoney/jsBeautifier.net эта утилитка должна делать то, что мне нужно, но почему-то просто молча завершается :(

malzilla всё четко раскодирует, но не умеет обрабатывать файлы из командной строки

Если можете помочь, напишите мне, пожалуйста, на alein.taseevo[at]gmail[dot]com

Заранее спасибо
ManHunter (21.09.2010 в 23:38):
Это не вордпресс, тут все написано своими руками.
Beginner (16.09.2010 в 23:46):
А где взять такой хайлайтер синтаксиса под Wordpress как у вас?
А то мне не нравятся ссылки с хайлайтера на [спам],
а сам не могу убрать, там eval(function(p,a,c,k,e,d)
Евгений (29.08.2010 в 00:32):
Спасибо большое!Как и Guron_utf8 хотел рсшифровать это меню, и получилось!Благодаря вашим рекомендациям,Malzille и включённым мозгам!)))
Олег (18.08.2010 в 16:35):
я имел в виду усложнит "Заменой имен переменных и функций".
Кстати, есть джава-приложение этого компилера. Оно может несколько взаимосвязанных файлов обработать.

А вообще, говорят, что код, получаемый этим компилиром работает быстрее.

ну по крайней мере польза от него уже есть. Код меньше места занимает.
ManHunter (18.08.2010 в 15:17):
Каким образом усложнит? Удалением пробелов и переносов строк? Ну так это решается им же самим, достаточно просто отформатировать код. Заменой имен переменных и функций? Это тоже не новость, так делают 99% обфускаторов и оптимизаторов JS. А вот синтаксическая оптимизация кода мне понравилась.
Олег (18.08.2010 в 15:10):
Усложнить задачу разбора твоего js-Кода (только усложнить, а не защититить)
поможет Google compiler, http://closure-compiler.appspot.com/home
кстати, он может работать как beautifer.
Isaev (21.07.2010 в 01:54):
Отличная статья!
Malzilla - зверь вообще! Ещё бы научиться пользовать весь её функционал...
И остальной софт довольно интересный, всё новое никогда не слышал :)
ManHunter (25.06.2010 в 18:53):
Плохо старался. Eval JavaScript Unpacker разбирает это за секунду.
Михаил (25.06.2010 в 18:51):
сам не смог получить рабочий код, используя Ваши рекомендации а код такой:

[удалено]
tasy (02.06.2010 в 01:16):
Ламеры, блин...
Евгений (27.05.2010 в 11:53):
Спасибо!
ManHunter (02.04.2010 в 17:03):
Можно. Меньше чем за минуту.
Sundin (02.04.2010 в 17:02):
Можно ли по этой статье расшифровать это:

[удалено]
ManHunter (27.03.2010 в 14:18):
В мире есть просто оптимисты, есть неисправимые наивные оптимисты, а есть такие, которые пишут "постучи мне в аську", "напиши мне на мыло" и т.п.
Сергей (27.03.2010 в 14:12):
Как расшифровать вот это ?????

отпишите в асю [del]

[удалено]

Мля я не то скачал....)))...По скринам догнал что интерфейс другой должен быть ............АХаах....
Guron_utf8 (19.03.2010 в 19:09):
спс огромное,в 20 сек расшифровал скрипт меню http://apycom.com/,
pompey (03.03.2010 в 00:15):
Ваууу! Вот это статья! Спасибо большое! Respect man!
ManHunter (11.02.2010 в 23:27):
А в голове мозгов нет. Мои соболезнования.
also (11.02.2010 в 23:26):
бугага! в архиве трой.
Komyak (27.01.2010 в 09:47):
ManHunter, спасибо!
Меня сюда привел поиск deIonCube, его я не нашёл, зато увидел много интересного. Только что удалил, с помощью этой фичи, сткчалку из скрипта.
ManHunter (22.01.2010 в 17:26):
А какой смысл в полной деобфускации? Распаковал, вынес нафиг всю защиту типа триала, привязки к домену, баннеров и прочей хни, причесал исходник до читаемого состояния и пользуйся на здоровье. Тем более с тех пор, как человечество придумало деньги, количество нерешаемых проблем резко сократилось.
BasTaller (22.01.2010 в 17:24):
Всё конечно хорошо для простых скриптов на несколько переменных...
А когда это более-менее приличный класс, - замучаешься расставлять переменные...
ManHunter (29.12.2009 в 19:38):
Камменты подчистил. Нужна помощь в распаковке и исследованиях - готовьте деньги. А все халявщики могут идти лесом.
Alexandr (24.11.2009 в 10:22):
Благодаря статье, открыл для себя Malzilla. Спасибо за статью.
Ismail (11.11.2009 в 15:06):
Огромное спасибо, все работает!

p.s. буду частым гостем...
ManHunter (11.11.2009 в 14:52):
Можно. Затрачено времени около 10 секунд, включая копирование.
Ismail (11.11.2009 в 14:50):
Можно ли руководствуясь вашим постом расшифровать это:

<script type="text/javascript">document.write(unescape('%3C%6C%69 %6E% 6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74 %22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%2 2%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%66%65% 6E%69%78%6F%6E%65%2E%72%75%2F%64%69%7A%61%69%6E%2F %66%6C%65%73%68%69%6E%66%6F%72%6D%65%72%2F%74%61%6 2%63%6F%6E%74%65%6E%74%2E%63%73%73%22%20%2F%3E')); </script>
ManHunter (30.08.2009 в 00:41):
Вообще-то там jQuery, но не суть :)
coolhaXOR (29.08.2009 в 13:38):
Допедрил наконец-то как все работает в этом скрипте. Здесь используется знаменитый prototype (яваскрипт для упращения работы вебмастеров). При помощи него и свойства innerHTML производится проверка всей страницы посимвольно и если символ входит в русский аски (АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя) то производится замена на символ из строки подстановки, которая указывается явно, в ней только производится сдвиг для отвода глаз.
Осталось только написать программу на дельфях для замены содержимого файлов аналогично яваскрипту. Ура!
ManHunter (14.08.2009 в 18:30):
Регулярки тут не помогут, символы по таблице соответствия надо менять одновременно за один проход, а не по очереди. Программ с такой табличной заменой я тоже не видел. Если б подобная задача стояла передо мной, то я б нарисовал скрипт на php из десятка строчек, там есть хорошая функция strtr, она как раз и выполняет подобное действие.
А JS лучше исследовать головой и руками, иначе ничему не научишься.
coolhaXOR (14.08.2009 в 16:13):
Все верно, работает. Я в первый раз попробывал через malzilla-у поэтому не вышло. А при помощи Eval.JavaScript.Unpacker все получилось, интересно почему?
Прошу совета: мне нужно около 200 зашифрованных страниц привести в нормальный вид, предполагаю что это можно сделать "массово" через регулярные выражения, но при помощи какой программы?
И чем удобнее всего исследовать яваскрипты?
Кстати, спасибо за оперативность!
ManHunter (14.08.2009 в 14:10):
Распаковал, сохранил, запустил, все работает. Что я делаю не так?
http://ifolder.ru/13539093
И можно обойтись вообще без расшифровки скриптов. Символы повторяются, делаешь таблицу какому символу соответствует исходный зашифрованный и после этого легко можешь преобразовать любой текст в обе стороны. Тем более, что подменяются только русские буквы.
coolhaXOR (14.08.2009 в 13:53):
Ну по-крайней мере попытка копи-паста на такой странице не возможна для неподготовленного человека (выдает мусор), и текстовую информацию на странице без шифровщика добавить нельзя.
Попробуй распаковать оба скрипта jquery.js и globals.js, сохранть их распакованными и запустить страницу - работать не будет.
Защита не моя, просто я попытался вскрыть ее чтобы перешифровать учебник но из-за недостатка знаний не смог.
Василий (16.07.2009 в 14:44):
Огромное спасибо за статью. Весь инет облазил (скрипт попался закодированый). Решение нашел только здесь. Все вскрыл и посмотрел. Спасибо.
ManHunter (01.07.2009 в 18:11):
DiFor, кинь мне, пожалуйста, пример такого кода, если найдешь. Посмотрим за какое время я его по косточкам разберу.
DiFor (01.07.2009 в 18:08):
что даст? нууу может быть какое-нибудь самоутверждение типа: "я написал, а они не смогли снять, уии, ляляля))".
ManHunter (26.06.2009 в 08:44):
DiFor, и что это даст? Один фиг все эти навороты в конечном итоге сведутся к банальному eval('расшифрованная строка'). Стало быть это действие может быть легко перехвачено. А любое усложнение алгоритма шифровки никак не добавляет стабильности приложению.
DiFor (26.06.2009 в 07:13):
насчет того, что нельзя усложнить рип кода - сильное заблуждение, усложнить можно очень сильно. в итоге процентов 90 просто забьют и даже не будут пытатся, как насчет не обфускации, а непосредственного шифрования+ разделения шифро-кода и самого ключа шифрования по разным подгружаемым файлам имеющим "время жизни", кукам, етк. если сильно заморочиться, то можно сильно помешать копи-паст =\
64-ядерный процессор (17.06.2009 в 19:56):
Ненавижу веб-мастеров, которые занимаются этой дрянью! Я имею в виду шифровку своих страниц. Тут тегов-то с гулькин нос, а после шифровки получается цдоровый и никому не нужный код.
Hamman (02.06.2009 в 18:11):
Спасибо огромное за статью! А то никак не мог поменять настройки модуля из-за зашифрованности js, Malzilla меня спасла.
Константин (13.05.2009 в 17:30):
За программку спасибо!
Опыта пока маловато в таких делах, а скрипты коммерческие изучать охота!
ManHunter (13.02.2009 в 23:00):
коля, тут нет ничего зашифрованного. Теперь ты мне очень срочно должен $100 за консультацию. А русский язык учи, пригодится.
коля (12.02.2009 в 17:16):
пожалуста помогите рашифровать это я пробывал у меня не чего не выходит очь срочно надо в долгу не останусь

[вся тупая херня удалена]
Игорь Авдеев (29.01.2009 в 12:46):
Спасибо большое за статью и ссылку на malzilla. Задолбали вирусописатели. Теперь есть инструмент, чтобы посмотреть куда ведут зашифрованные ссылки.
ManHunter (10.01.2009 в 11:10):
Павел, а разве из статьи непонятно, что все эти потуги бессмысленны? JS - это не тот язык, в котором можно поставить серьезную защиту. Не хочешь чтобы твой код рипали - не показывай его никому, вот и все решение.
Павел (10.01.2009 в 06:33):
Хотелось бы, теперь наоборот - узнать как можно максимально усложнить задачу тем, кто пытается скопировать у тебя наработки на js?
ManHunter (04.11.2008 в 21:49):
Nutscracker, тут смысл в том, чтобы показать как это делается ручным способом, без привлечения аддонов и черной магии :) А когда уже у людей будет понимание самого процесса, вот тогда они смогут снять любую известную и неизвестную защиту.
Nutscracker (04.11.2008 в 17:34):
> http://www.antssoft.com/htmlpr...d_sample.htm
Вялая защита. Впрочем, я сильно сомневаюсь, что тут возможна неснимаемая защита.
Нужно только вытянуть document.body.innerHTML (или document.body.textContent – по ситуации) и поиграться с заменой через регулярные выражения (видел похожую штуку, но со скрытым мусором среди полезного текста).
А тут можно даже через
Выделить всё – Копировать или Исходный код выделенного фрагмента (нужен правильный браузер и запрет перехвата контекстного меню)
А в Opera можно воспользоваться кнопкой вызова контекстного меню на клавиатуре.

А вообще, такие безобразия неплохо лечатся с помощью NoScript ( https://addons.mozilla.org/ru/...ox/addon/722 ):
отключить в настройках автообновление страницы – разрешить скрипты – получить страничку с текстом – запретить скрипты
:)

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2018
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 2 (0.0056 сек.) / Память: 4.75 Mb
Наверх