Blog. Just Blog

PCL's JS_Protect 1.0

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Небольшой класс на PHP для шифрования скриптов JavaScript. Изначально задумывался как дополнительная мера противодействия спамботам, но пока успешно работают более простые методы, и PCL's JS_Protect остался в качестве proof of concept. Класс позволяет шифровать исходные тексты скриптов JavaScript с целью затруднения их автоматического анализа. Любителей всякой малвары и шаровары сразу огорчу: JS_Protect легко снимается вручную при помощи Eval JavaScript Unpacker. Главный недостаток этой защиты в том, что зашифрованный скрипт очень сильно увеличивается в размерах.
  1. // Подключение модуля
  2. include "js_protect.php";
  3.  
  4. // Создание класса
  5. $js_protect = new JS_Protect;
  6.  
  7. // Исходный код скрипта для шифрования
  8. $js_protect->js_source=$code;
  9.  
  10. // Уровень вложенности шифровки. Рекомендуется 1, максимум 2
  11. $js_protect->code_level=1;
  12.  
  13. // Количество внутренних функций. Повышают надежность, но значительно
  14. // увеличивают размер получаемого кода
  15. $js_protect->func_level=rand(0,6);
  16.  
  17. // Выполнить URL-кодирование защищенного скрипта или нет
  18. $js_protect->enable_raw=false;
  19.  
  20. // Запуститиь процедуру шифрования
  21. echo $js_protect->protect();
Вложенность шифрования не рекомендуется выставлять более 2, потому что в этом случае размер скрипта вырастет до совсем недопустимых размеров. Опция "использовать внутренние функции" дает дополнительную защиту, но также увеличивает размер получаемого скрипта. Если эта опция не нужна, то установите значение func_level = 0. URL-кодирование также дает дополнительную защиту и скрывает обработанный текст, но при этом еще больше увеличивает размер.

После обработки скрипт превращается примерно в такой вот нечитаемый фарш:

//-----------------------------------------------
// This script was encrypted by PCL's JS_Protect
// http://www.manhunter.ru
//-----------------------------------------------
function LFHXVQNkUBCP( BPUbMLwZPvjfx ) {var bTMthJQhUFWtcr ="\x76"
+ 'H' +'ghJsjIdKbR'.substring ( 1 +3, 5 * 1 ) + "\x72"+ ''+ '\x73'
+ "" + 'Q'+'fLEcWAzjx'.replace (/[cfjLzAWxE]/g, '' ) + 'fEqdOGUIW'.
replace(/[IdOqWfEU]/g, '' ) + '\x6F'+ ""+'m'+ 'q'+ "" + 'F'+'U'+
"" +"\x74"+ 'RqXgfoeZk'.replace (/[RgkqXofZe]/g, '') + 'Y' + '
\x69'+ "" + 'N'+ '' + 'MsWGtAwJRQI'.substring ( 5* 1, 6 )+ 'r
LFPy'.replace(/[rLyFP]/g,'') + 'W'+ '' + '\x77' +'\x6C' +'D'+unescap
e("%54" )+ '\x61'+ "" + 'eMUadoAlHF'.substring (2 *2, 3+ 2 ) + "\x
6B"+ "" + 'fLybRPuZvfE'.substring (5+ 0, 2 +1* 4 )+ 'uuWOZtXIv'.replac
e (/[XWtvIuuO]/g,'' )+ '' + unescape ( '%63' )+ "" + 'u' +'C'+""
+ 'WYwdJMXH'.replace (/[WwXMHdY]/g, '')+ "" + 'h'+ ''+ 'kwtQsRrU
v'.replace (/[tQswrUvk]/g,'' ) +unescape ( '%67')+'EBqlckBd'.replace(
/[dcqkBBEl]/g, '' )+ 'p'+ "" +'S'+"" +unescape( '%4c' ) + 'REekMN
Gm'.substring ( 4 * 1,2 *2+ 1 )+'' + 'B' + unescape ( '%4f') + '
I'+ 'n'+ ""+ 'e'+ '' + '\x66' + 'GntXcIoh'.substring ( 1+2,4 )+
""+ "\x7a"+ ""+ 'x'+ 'kXZTTBKgV'.replace(/[TKZTXBVgk]/g, '' ) +unesc
ape( "%79" ) + 'V'+ "" + unescape ( "%45" ) + 'osSiKhSH'.substr
ing( 0 + 4, 5 + 0 )+ '' +'b'; qqGnywdOiOXvi = bTMthJQhUFWtcr.charAt (
BPUbMLwZPvjfx) ; return qqGnywdOiOXvi;}function hZTrdBRuNoXcYaXayw(
xmlubofSiEvwETV ) { var FwrqGwILjIv = 'X' + 'h'+ ''+ 'F' +'b'+
"" + 'JillchXM'.replace(/[lhlXiMJ]/g,'' ) +'u'+"" + "\x6C"+ '' +'S'
+ 'C'+ "" + 'W'+ '' + "\x49"+'' + 'xdyQeEVqzvL'.replace(/[dqvVQL
yxze]/g,"" )+'iLbCJhiU'.replace(/[bChiLiU]/g, "" )+ "" + '\x59'+ '
' + 'QTEObKJOsz'.replace(/[sTJEQObzO]/g,"" )+ 'pYhvaYZU'.replace (/[YZU
aYhpv]/g,'') + "\x6d"+ "" + "\x41"+ '' + '\x5a'+ 'ktPOEIzvYO'.replac
e (/[vOOtEzPkIY]/g,'' ) + 'g'+'\x70'+ ''+ 'qHyBosSF'.replace (/[FHqBS
ys]/g, "" )+ 'x'+ 'pIZsjyL'.substring( 3*1,4+0 * 5 )+ '' + "\x4d" +
unescape ( "%77" )+"" + 'd'+'' +'D'+ 'a'+ ''+'H'+''+'\x66'+ ''
+ 'hDvknEPZ'.replace (/[PDEZkvh]/g, '' )+'' + 't'+ '' + '\x56' +
'i' +"\x54"+ 'ZTjbwvUTN'.replace (/[jTNbTZwU]/g,"")+'' + 'G' + 'XRdd

Размер зашифрованного скрипта во много раз превышает размер исходного, так что используйте шифрование только для особо критичных участков кода. В приложении сам класс JS_Protect и пример его использования. Категорически запрещается использовать скрипт в составе коммерческих проектов, а также распространять за плату или любое иное вознаграждение.

PCL's JS_Protect 1.0PCL's JS_Protect 1.0

PCLs.JS_Protect.1.0.zip (3,237 bytes)


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

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

Комментарии

Отзывы посетителей сайта о статье
ManHunter (26.01.2010 в 00:46):
Еще раз прочитай первый абзац описания скрипта, только сделай это внимательно.
64-ядерный процессор (26.01.2010 в 00:41):
Этот класс делает JavaScript всего лишь трудночитаемым. 5 минут посидеть и JS снова выглядит  как новенький. Единственное что не удастся восстановить - это имена функций. Сам скрипт как был открытым так и останется.

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

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

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