Вот и увидела свет новая версия этого скрипта.
Возможности обфускатора (включая новые):
[+] Замена имен переменных
[+] Замена имен функций
[+] Шифрование статических строк
[+] Шифрование имен стандартных функций PHP
[+] Обфускация INTEGER’ов
[+] Сжатие скрипта
[+] Архивация скрипта
[+] Добавление треш-комментариев
[+] Обфускация констант PHP
[+] Возможность добавления мусорных инструкций и переменных заданной вероятностью
[+++] И многое другое, множество удобств
Исправлены различные недочеты, ошибки, имевшиеся в версии 1.4, улучшена обфускация в некоторых случаях, версия 1.5 более экономно расходует память.
Теперь обфускатор создает каждый раз совершенно новый код, особенно с включенной опцией добавления мусорных инструкций.
Обфускатор не поддерживает конструкции eval() и $$var_name, а также по-прежнему могут быть проблемы со скриптами в кодировке UTF-8.
Вот, например, во что можно превратить простой "Hello, world!":
1 |
<? $GLOBALS['_1211036487_']=Array(base64_decode('' .'c3' .'R' .'ydG91cHBl' .'cg=='),base64_decode('Y2' .'91bnQ' .'='),base64_decode('Y3VybF9tdWx0aV' .'9leG' .'Vj'),base64_decode('' .'c3Vic3Ry'),base64_decode('YX' .'Jy' .'YXlfcmFuZA' .'=='),base64_decode('Zmxv' .'b3' .'I='),base64_decode('bXRfcmFuZ' .'A' .'=='),base64_decode('' .'c3RycG9z'),base64_decode('bXlz' .'c' .'WxfY2xv' .'c2U='),base64_decode('Zmdld' .'HN' .'z'),base64_decode('bXRfcmFuZA=' .'='),base64_decode('' .'YXJyYX' .'l' .'fa2V5X2V4' .'aX' .'N0cw=='),base64_decode('Z' .'Gly'),base64_decode('c2Vzc2' .'lvbl9' .'nZ' .'XRfY29v' .'a2llX3Bh' .'cmFtc' .'w=' .'='),base64_decode('bXRfcmFuZA=='),base64_decode('c3Ry' .'cG' .'9z'),base64_decode('YX' .'JyYXl' .'fZGlm' .'Zl9' .'rZXk=')); ?><? function _1513971471($i){$a=Array('Y' .'3V0YQ==','' .'LCB' .'3b3JsZC' .'E=','dmVtYWtm' .'cmpnYnJybm' .'Jpa2Q=','' .'bW' .'Vxbno=','SGVsbG8=','Z2c=','a2I=','amxt' .'dA' .'==','ZmV' .'tY' .'m' .'d' .'1d3V' .'xa293cGU' .'=','cXo=');return base64_decode($a[$i]);} ?><?php function l__0($_0){$_1=$GLOBALS['_1211036487_'][0]($_0);$_2=round(0+813.666666667+813.666666667+813.666666667);if((round(0+1284.5+1284.5)+round(0+15.2+15.2+15.2+15.2+15.2))>round(0+513.8+513.8+513.8+513.8+513.8)|| $GLOBALS['_1211036487_'][1]($_1));else{$GLOBALS['_1211036487_'][2]($_3);}$_3=round(0+861);$_4=_1513971471(0);if((round(0+47.8+47.8+47.8+47.8+47.8)^round(0+119.5+119.5))&& $GLOBALS['_1211036487_'][3]($_3,$_3,$_3))$GLOBALS['_1211036487_'][4]($_5,$_0);print $_1 ._1513971471(1);(round(0+657+657+657+657)-round(0+525.6+525.6+525.6+525.6+525.6)+round(0+1009.5+1009.5+1009.5+1009.5)-round(0+2019+2019))?$GLOBALS['_1211036487_'][5]($_0,$_3,$_1,$_5,$_0):$GLOBALS['_1211036487_'][6](round(0+2285),round(0+1314+1314));if($GLOBALS['_1211036487_'][7](_1513971471(2),_1513971471(3))!==false)$GLOBALS['_1211036487_'][8]($_3,$_1,$_1);(round(0+857+857)-round(0+1714)+round(0+24+24+24)-round(0+72))?$GLOBALS['_1211036487_'][9]($_1,$_1,$_0):$GLOBALS['_1211036487_'][10](round(0+536),round(0+857+857));while(round(0+1621+1621)-round(0+3242))$GLOBALS['_1211036487_'][11]($_3,$_3,$_5);while(round(0+4312)-round(0+862.4+862.4+862.4+862.4+862.4))$GLOBALS['_1211036487_'][12]($_1);$_6=round(0+3584);}l__0(_1513971471(4));$_7=_1513971471(5);$_8=round(0+211.5+211.5+211.5+211.5);(round(0+1645.33333333+1645.33333333+1645.33333333)-round(0+1234+1234+1234+1234)+round(0+947.25+947.25+947.25+947.25)-round(0+1263+1263+1263))?$GLOBALS['_1211036487_'][13]($_0,$_8,$_5):$GLOBALS['_1211036487_'][14](round(0+126+126+126+126+126),round(0+1645.33333333+1645.33333333+1645.33333333));$_5=_1513971471(6);$_9=_1513971471(7);if($GLOBALS['_1211036487_'][15](_1513971471(8),_1513971471(9))!==false)$GLOBALS['_1211036487_'][16]($_1); ?> |
В редакторе это выглядит так:
Скачать: ZIP
Обновление 11 октября: поправлены ошибки при обфускации классов, тем не менее, поддержка классов на данный момент неполная.
и зачем это надо?
Для защиты кода
http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%86%D0%B8%D1%8F
Спасибо Ушел тестить
Нет, ну жестокая обфускация все таки.
Небольшой вопрос: что необходимо знать, что бы написать обфускатор для PHP? Как я понимаю, нужно хорошо знать синтаксис PHP как минимум. А еще что?
Да ничего больше и не надо)
Красавец) Когда вы только работать успеваете. Обф. затестим.
кстати очень полезно, если пишешь свои скрипты и не хочешь чтоб смотрели исходник. Вопросик, обфускация влияет на производительность скрипта?
Конечно... но незначительно. В обфускаторах обычно указывают количество проходов. Тестил один обфускатор с 3 проходами. так результатирующий скрипт вообще завис ))
Огромное Вам спасибо, за скрипт. А то в инете куча инфы по расшифровке, и ноль по поводу того как наоборот зашифровать. Спасибо еще раз!
Полезная штука! От всего не спасет, но как «защита от дурака» работает на УРА! Респект автору!
так что насчёт производительности?
Скорость выполнения скрипта упадет, если строки в base64 шифровать, если шифровать стандартные php-функции и т.д. Скрипту перед выполнением придется все эти имена и строки расшифровывать.
Несколько пугает строчка, говорящая о том, что в UTF-8 могут быть проблемы )
А прога шоб расшифровать есть???
Неа
Кажется в квестах есть этот прикол!)Я там щя застрял!
привет всем, мне нужен несколько совет от php програмиста если не трудно можете написать мне через icq? мой icq 565238472 ,Жду с нетерпением)))))
Интересно… а как потом самому править такой код запутанный?
это для релиза, то есть у тебя на компе норм. копия, а у всех... хм)
Благодарю, очень интересно.
В коде мелкая ошибка, 742 строчка:
PHP Obfuscator by DX $ver
переменная $ver в теле функции не определена, нужно сделать её глобальной.
не работает, чистая страница, впрочем, у меня отключен показ ошибок, потому, возможно, ошибка есть, но я ее не могу увидеть.
Все работает нормально. Автору огромное спасибо!!!
Есть такой вопрос, можно этот обфускатор сделать такой же как JS то есть полиморфным, так как добавляемый в тело МУСОР мне кажется хороший полиморф как в JS не дает. Поправти если ошибаюсь. У Вас есть в планах продолжения улучшения данного PHP обфускатора?
Пока планов что-то менять нет, но обфускатор может и переменные случайно именовать, и функции, и числа заменять рандомно, и мусор добавлять.
Хуевый обфускатор, генератор ошибок какой-то, вот зачем он делает такое:
$_29 .=
;
?
Наверное, потому что в скрипте хуйня какая-то, либо настройки выставлены хуево.
Афигеть, давно искал нормальный обфускатор для пыха, а нашел "под носом" можно сказать. Спасибо вам ребята, отличный у вас блог.
Спасибо за ваш труд, скрипт очень полезный для меня! (:
Вставил код прогнал, но появилась такая строка
!!!В исходном коде найдены вызовы функции eval(). Проверьте её обфускацию или проведите её вручную.
Как провести вручную?
Посмотреть, что внутри этих вызовов и посмотреть, что получилось в обфусцированном коде, все ли переменные там имена поменяли (зависит, короче говоря, от тех опций, которые ты выставил).
Спасибо огромное, сегодня использовал твой обфускатор, сработал на отлично, но было маленькое "но":
У меня есть класс, и в коде я вызываю поля у обьекта этого класса через стрелку, например $data->Pages, где Pages это паблик мембер, обьявленный в классе соответственно как public $Pages. Так вот, пока я не добавил переменную $Pages в список переменных, которые не должны заменяться, то скрипт не работал.
Собственно предложение, а может хендлить это автоматом, и если есть переменная-член класса, то автоматически не шифровать ее имя, так как потом будет невозможно вызвать ее по указателю, или как это в пыхе называется.
А так все супер, еще раз большое спасибо.
Еще посмотрел, никак не шифруются булевские переменные TRUE/FALSE. Было бы очень неплохо, вот пример, как можно преобразовывать:
http://php.su/learnphp/datatypes/?mn#boolean
Пока что нет планов на создание новой версии... В любом случае, даже если бы они шифровались, у более-менее опытного человека снять любую обфускацию много времени не занимает.
С классами вообще все сложно, я делал слабую поддержку и мало тестировал, об это я в посте написал.
Не, дак понятно, что снять обфускацию можно, она же предназначена просто для усложнения понимания кода, так сказать. Просто шифрование була это еще один кирпичик в стену. Может когда-то в новой версии и прикрутишь.
А можно еще вопрос? Я что-то не вкурил прикол про уличную магию и цитаты Блейна в коде, можешь пояснить?
Это старая фича, которая добавляет целую гору ненужных бессмысленных комментариев в код)
Вообще порадовали! Спасибо! Было бы совсем красиво, если еще можно было его использовать как библу... Т.е. подключил инклудом, передал код с настройками, а те обф сгенерился...
Никто не мешает сделать такое самому, код открыт.
Но у него проблема с include , ничего не работает если есть include на странице
Работает вообще-то, просто в инклюдах имена переменных не будут соответствовать тем, что в обфусцированном скрипте. Но если правильно настроить, и этого можно избежать.
Но если правильно настроить, и этого можно избежать
Подскажите как правильно настроить ?
Указать в настройках, какие имена переменных не должны заменяться. В список должны попасть те переменные, которые находятся в инклюде и используются в самом скрипте. Такое же, возможно, с функциями тоже надо будет проделать.
Если требуется и инклюд, и скрипт обфусцировать, то надо будет опять-таки в настройки засунуть общие имена переменных и функций для обоих сорсов.
Скажите а есть что то с обратным эфектом то есть деобфиксатор для этого и 1.4 автор прозьба ответить или на мыло или в коменты буду благодарен )
Автоматических средств не встречал, эта обфускация необратима, если только руками править скрипт.
Подскажите пожалуйста в чем может быть причина. Обфусцированный код выдает Call to undefined function если включать обфускацию статических строк. А мне как раз и хотелось бы скрыть статические строки которые присваиваются переменным в начале скрипта.
Сложно сказать, надо скрипт видеть или хотя бы его часть. Скрипт из одного файла или из нескольких состоит? В скрипте есть операторы eval?
Скрипт из одной страницы и eval нет в нем.
Если я Вам вышлю скрипт сможете глянуть?
На pastebin.com заливайте
И куда потом ссылку кидать?
Очевидно - в комментарии
Можно мне в приватные сообщения на forum.kaimi.io, пользователь dx.
Замечательно, обфусцировал свой код - теперь сам черт его не разберет )) А деобфускаторы справятся?
Полностью никто не справится, так как коверкаются имена переменных и функций. Но до более-менее читабельного состояния разобрать можно. Но автоматического софта для расшифровки такого не встречал, если только вручную.
Подскажите как расшифровать
$GLOBALS['_414705932_'][51](round(0) + 2.5 + 2.5) => "",
$GLOBALS['_414705932_'][52](round(0) + 5.3333333333333 + 5.3333333333333 + 5.3333333333333) => "",
$GLOBALS['_414705932_'][53](round(0) + round(0 + 1.6 + 1.6 + 1.6 + 1.6 + 1.6)) => "",
$GLOBALS['_414705932_'][54](round(0) + round(0 + 0.75 + 0.75 + 0.75 + 0.75)) => "",
$GLOBALS['_414705932_'][55](round(0) + 10.333333333333 + 10.333333333333 + 10.333333333333) => "",
Взять руками и расшифровать или написать софт для этих целей. Если имеется знание пхп, то это вполне себе реализуемо.
Хороший блог. Спасибо за оперативность.
Можна ли на електронку указану в коментарии отписатся (привести пример). знания пхп нету, но руки ростут нормально! ))
А смысл? Я это раскодировать точно не буду.
Я сам декодирую, помогите примерами.
Какими примерами? Рассказать, как вычислить значение выражения типа round(0) + 2.5 + 0.1? Так это основы пхп.
Добрый день, нужно деобфусцировать два файла за $
Один файл закрыт Best PHP Obfuscator, второй PHP Obfuscator by DX 1.5 (вашим)
Не забываем, что namespace должен определяться перед всеми конструкциям в скрипте ). Обфускацию статичных строк стоит делать иначе, текущий подход позволит обратить все одним проходом. В целом полезный скрипт, именно то что и требуется без всяких бесчисленных не имеющих смысла кодирований в басе и евалов. Пожалуй сделаю из этого консольную утилиту, чтобы сразу весь проект можно было в один клик обфусцировать.
Еще одну вещь забыл написать. Неплохо было бы добавить обфускацию имен переменных и функции (методов) при помощи MD5 от имени переменной или метода. Для чего это нужно. Например, есть у меня класс A c публичными свойствами и методами, описан он был в файле 1.php. В файле 2.php я подключаю файл 1.php и создаю экземпляр класса А, в результате ничего не работает, а все потому что свойства и методы класса А имеют разные названия после обфускации. Если задавать имена при помощи MD5 данная проблема отпадает.
Автору респект, отличный обфускатор :)
Что не так?
Notice: Undefined variable: ver in C:\Program Files (x86)\VertrigoServer\www\obf\obf.php on line 745
Call Stack
# Time Memory Function Location
1 0.0090 1514824 {main}( ) ..\obf.php:0
2 0.0130 2200272 errpr( ) ..\obf.php:553
Для использовании опции добавления неисполняемого кода в скрипте должна быть хотя бы одна переменная.
Почему при добавлении в список переменных, которые ненадо трогать - скрипт не работает и пишет что список не корректный?
спасибо
Может, добавляешь как-то не так. Например, пустую строку оставил в конце списка или еще что-то. Эта версия обфускатора достаточно старая, я уже не помню, как точно она работает.
Как там обстоят дела с написанием новой версии, продвигаются? долго еще?))
http://www.plati.ru/asp/pay.asp?idd=1798956
То что надо! Спасибо! Я полученный код прогоняю через собственный обфускатор, который делит все на мелкие кусочки и запутывает их. Получается супер!!
Как насчет расшифровки этого кода? Нечаянно я потерял открытый исходный код :S
Вручную если только. Имена переменных/функций так просто не восстановить.
http://bcpolygon.ru/ru/vip/php/ обновленный онлайн обфускатор.
Старье, актуальная версия 2.5.2
Похоже, ничего, кроме обновленного GUI, там нет :)
И да, актуальная версия 2.5.2, скоро уже даже 2.5.3.
Где можно скачать актуальную версию?
Актуальная версия в данный момент продается: http://plati.ru/itm/1798956
сделайте оплату PayPal
не могу оплатить
PayPal пока сделать не можем. Пока что добавили на plati.ru яндекс деньги, btc и киви.
А на каких версиях php будет работать обфусцированный код
и можно ли избавиться будет от конструкции gzuncompress(base64_decode(
1. На PHP 5.2 и старше
2. Да, есть настройка, чтобы обфусцировать без этой конструкции (можно сделать собственный профиль, где убрать сжатие с помощью gzcompress/base64). eval тоже можно убрать.
Если интересует, могу выложить парочку обфусцированных с разными настройками скриптов.
Как купить можно последнюю версию? Плати в блоке, там где не в блоке, просто висит
https://plati.market/itm/php-obfuscator-2-5-4-by-dx/1798956
Вроде сняли блок, сайт РКН говорит, что плати.ру в базах нет
Kak zakriptovat WSO? Beliy ekran.
Старым обфускатором, думаю, никак. Есть новый, который умеет: http://www.plati.ru/asp/pay.asp?idd=1798956
Супер! спасибо огромнейшее!
Ты помог многим начинающим разработчикам сделавшим хоть что-то ценного!
Это действительно выдающейся скрипт! Низкий поклон автору и вечная уважуха!