PHP Obfuscator 1.5

Вот и увидела свет новая версия этого скрипта.

Возможности обфускатора (включая новые):
[+] Замена имен переменных
[+] Замена имен функций
[+] Шифрование статических строк
[+] Шифрование имен стандартных функций PHP
[+] Обфускация INTEGER’ов
[+] Сжатие скрипта
[+] Архивация скрипта
[+] Добавление треш-комментариев
[+] Обфускация констант PHP
[+] Возможность добавления мусорных инструкций и переменных заданной вероятностью
[+++] И многое другое, множество удобств

Исправлены различные недочеты, ошибки, имевшиеся в версии 1.4, улучшена обфускация в некоторых случаях, версия 1.5 более экономно расходует память.

Теперь обфускатор создает каждый раз совершенно новый код, особенно с включенной опцией добавления мусорных инструкций.

Обфускатор не поддерживает конструкции eval() и $$var_name, а также по-прежнему могут быть проблемы со скриптами в кодировке UTF-8.

Вот, например, во что можно превратить простой "Hello, world!":

В редакторе это выглядит так:

Скачать: ZIP

Обновление 11 октября: поправлены ошибки при обфускации классов, тем не менее, поддержка классов на данный момент неполная.

PHP Obfuscator 1.5: 78 комментариев

  1. Нет, ну жестокая обфускация все таки.
    Небольшой вопрос: что необходимо знать, что бы написать обфускатор для PHP? Как я понимаю, нужно хорошо знать синтаксис PHP как минимум. А еще что?

  2. кстати очень полезно, если пишешь свои скрипты и не хочешь чтоб смотрели исходник. Вопросик, обфускация влияет на производительность скрипта?

    1. Конечно... но незначительно. В обфускаторах обычно указывают количество проходов. Тестил один обфускатор с 3 проходами. так результатирующий скрипт вообще завис ))

  3. Огромное Вам спасибо, за скрипт. А то в инете куча инфы по расшифровке, и ноль по поводу того как наоборот зашифровать. Спасибо еще раз!

    1. Скорость выполнения скрипта упадет, если строки в base64 шифровать, если шифровать стандартные php-функции и т.д. Скрипту перед выполнением придется все эти имена и строки расшифровывать.

  4. привет всем, мне нужен несколько совет от php програмиста если не трудно можете написать мне через icq? мой icq 565238472 ,Жду с нетерпением)))))

  5. В коде мелкая ошибка, 742 строчка:
    PHP Obfuscator by DX $ver
    переменная $ver в теле функции не определена, нужно сделать её глобальной.

  6. не работает, чистая страница, впрочем, у меня отключен показ ошибок, потому, возможно, ошибка есть, но я ее не могу увидеть.

  7. Все работает нормально. Автору огромное спасибо!!!
    Есть такой вопрос, можно этот обфускатор сделать такой же как JS то есть полиморфным, так как добавляемый в тело МУСОР мне кажется хороший полиморф как в JS не дает. Поправти если ошибаюсь. У Вас есть в планах продолжения улучшения данного PHP обфускатора?

    1. Пока планов что-то менять нет, но обфускатор может и переменные случайно именовать, и функции, и числа заменять рандомно, и мусор добавлять.

  8. Афигеть, давно искал нормальный обфускатор для пыха, а нашел "под носом" можно сказать. Спасибо вам ребята, отличный у вас блог.

  9. Вставил код прогнал, но появилась такая строка
    !!!В исходном коде найдены вызовы функции eval(). Проверьте её обфускацию или проведите её вручную.

    Как провести вручную?

    1. Посмотреть, что внутри этих вызовов и посмотреть, что получилось в обфусцированном коде, все ли переменные там имена поменяли (зависит, короче говоря, от тех опций, которые ты выставил).

  10. Спасибо огромное, сегодня использовал твой обфускатор, сработал на отлично, но было маленькое "но":
    У меня есть класс, и в коде я вызываю поля у обьекта этого класса через стрелку, например $data->Pages, где Pages это паблик мембер, обьявленный в классе соответственно как public $Pages. Так вот, пока я не добавил переменную $Pages в список переменных, которые не должны заменяться, то скрипт не работал.
    Собственно предложение, а может хендлить это автоматом, и если есть переменная-член класса, то автоматически не шифровать ее имя, так как потом будет невозможно вызвать ее по указателю, или как это в пыхе называется.
    А так все супер, еще раз большое спасибо.

      1. Пока что нет планов на создание новой версии... В любом случае, даже если бы они шифровались, у более-менее опытного человека снять любую обфускацию много времени не занимает.

    1. С классами вообще все сложно, я делал слабую поддержку и мало тестировал, об это я в посте написал.

  11. Не, дак понятно, что снять обфускацию можно, она же предназначена просто для усложнения понимания кода, так сказать. Просто шифрование була это еще один кирпичик в стену. Может когда-то в новой версии и прикрутишь.
    А можно еще вопрос? Я что-то не вкурил прикол про уличную магию и цитаты Блейна в коде, можешь пояснить?

  12. Вообще порадовали! Спасибо! Было бы совсем красиво, если еще можно было его использовать как библу... Т.е. подключил инклудом, передал код с настройками, а те обф сгенерился...

    1. Работает вообще-то, просто в инклюдах имена переменных не будут соответствовать тем, что в обфусцированном скрипте. Но если правильно настроить, и этого можно избежать.

    1. Указать в настройках, какие имена переменных не должны заменяться. В список должны попасть те переменные, которые находятся в инклюде и используются в самом скрипте. Такое же, возможно, с функциями тоже надо будет проделать.
      Если требуется и инклюд, и скрипт обфусцировать, то надо будет опять-таки в настройки засунуть общие имена переменных и функций для обоих сорсов.

  13. Скажите а есть что то с обратным эфектом то есть деобфиксатор для этого и 1.4 автор прозьба ответить или на мыло или в коменты буду благодарен )

  14. Подскажите пожалуйста в чем может быть причина. Обфусцированный код выдает Call to undefined function если включать обфускацию статических строк. А мне как раз и хотелось бы скрыть статические строки которые присваиваются переменным в начале скрипта.

    1. Сложно сказать, надо скрипт видеть или хотя бы его часть. Скрипт из одного файла или из нескольких состоит? В скрипте есть операторы eval?

    1. Полностью никто не справится, так как коверкаются имена переменных и функций. Но до более-менее читабельного состояния разобрать можно. Но автоматического софта для расшифровки такого не встречал, если только вручную.

  15. Подскажите как расшифровать
    $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) => "",

    1. Взять руками и расшифровать или написать софт для этих целей. Если имеется знание пхп, то это вполне себе реализуемо.

      1. Хороший блог. Спасибо за оперативность.
        Можна ли на електронку указану в коментарии отписатся (привести пример). знания пхп нету, но руки ростут нормально! ))

  16. Добрый день, нужно деобфусцировать два файла за $
    Один файл закрыт Best PHP Obfuscator, второй PHP Obfuscator by DX 1.5 (вашим)

  17. Не забываем, что namespace должен определяться перед всеми конструкциям в скрипте ). Обфускацию статичных строк стоит делать иначе, текущий подход позволит обратить все одним проходом. В целом полезный скрипт, именно то что и требуется без всяких бесчисленных не имеющих смысла кодирований в басе и евалов. Пожалуй сделаю из этого консольную утилиту, чтобы сразу весь проект можно было в один клик обфусцировать.

  18. Еще одну вещь забыл написать. Неплохо было бы добавить обфускацию имен переменных и функции (методов) при помощи MD5 от имени переменной или метода. Для чего это нужно. Например, есть у меня класс A c публичными свойствами и методами, описан он был в файле 1.php. В файле 2.php я подключаю файл 1.php и создаю экземпляр класса А, в результате ничего не работает, а все потому что свойства и методы класса А имеют разные названия после обфускации. Если задавать имена при помощи MD5 данная проблема отпадает.

  19. Что не так?

    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

    Для использовании опции добавления неисполняемого кода в скрипте должна быть хотя бы одна переменная.

  20. Почему при добавлении в список переменных, которые ненадо трогать - скрипт не работает и пишет что список не корректный?

    спасибо

    1. Может, добавляешь как-то не так. Например, пустую строку оставил в конце списка или еще что-то. Эта версия обфускатора достаточно старая, я уже не помню, как точно она работает.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *