
PCL's JS_Protect 1.0
Небольшой класс на PHP для шифрования скриптов JavaScript. Изначально задумывался как дополнительная мера противодействия спамботам, но пока успешно работают более простые методы, и PCL's JS_Protect остался в качестве proof of concept. Класс позволяет шифровать исходные тексты скриптов JavaScript с целью затруднения их автоматического анализа. Любителей всякой малвары и шаровары сразу огорчу: JS_Protect легко снимается вручную при помощи Eval JavaScript Unpacker. Главный недостаток этой защиты в том, что зашифрованный скрипт очень сильно увеличивается в размерах.Code (PHP) : Убрать нумерацию
- // Подключение модуля
- include "js_protect.php";
- // Создание класса
- $js_protect = new JS_Protect;
- // Исходный код скрипта для шифрования
- $js_protect->js_source=$code;
- // Уровень вложенности шифровки. Рекомендуется 1, максимум 2
- $js_protect->code_level=1;
- // Количество внутренних функций. Повышают надежность, но значительно
- // увеличивают размер получаемого кода
- $js_protect->func_level=rand(0,6);
- // Выполнить URL-кодирование защищенного скрипта или нет
- $js_protect->enable_raw=false;
- // Запуститиь процедуру шифрования
- echo $js_protect->protect();
После обработки скрипт превращается примерно в такой вот нечитаемый фарш:
//-----------------------------------------------
// 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 и пример его использования. Категорически запрещается использовать скрипт в составе коммерческих проектов, а также распространять за плату или любое иное вознаграждение.
Просмотров: 4099 | Комментариев: 2

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

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

Добавить комментарий
Заполните форму для добавления комментария
