free online php obfuscator

Free Online PHP Obfuscator is designed to help PHP developers protect their intellectual property. Any time you give your PHP source code to someone else your intellectual property can be used and altered without your permission.

It’s not one-way encryption but it will keep curious eyes away from your code.

These tryed again upload to server’s, here little sample modsecurity audit log:

You can decode PHP Obfuscator file here:
http://decode.tools

Again this PHP Obfuscator inside is Filesman backdoor:

Again malware tryed uploaded to customer website.

Malware PHP Signatures

Use can use for FREE Malware Expert – Signatures detect malware from PHP files.

Subscribe

Subscribe to our e-mail newsletter to receive updates.

The PHP Obfuscator online tool obfuscates the source code of a PHP script so that it is difficult to read by people and it’s significance may be recognized only with difficulty.

In the case of a release of PHP scripts we might often avoid that other people can easily identify the exact function of the script, or we want to make it difficult for them to use the code for their own scripts.

For this, PHP Obfuscator renames the variable name, interface, class and function names into meaningless characters and numbers. Spaces, empty lines and comments will be removed from the source code. Furthermore, strings (except «here docs» blocks) can be encoded, which can be useful to avoid simple changes to the script output.

With PHP Obfuscator, no complete illegibility of the source code can be achieved, since the PHP server must be still able to process the script — even without additional software installed on the server.

For proper processing of the script, the full source code or the entire file (including HTML tags) should be pasted. If you want to process only a portion of a script, the code block must be contain a PHP start and end tag.

Did you like my page, one of my freeware applications or online tools?


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

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

Анализирование кода

Вот один из этих скриптов, открывая такой скрипт в блокноте, мы увидим:

Разобьем для начала его на строки:

и сохраним в файл encoded_script.php

Видно что тут код разбит на 4е части. В каждой выполняется eval.
Для удобства дешифровки eval воспользуемся расширением для PHP — Evalhook. Его написал Stefan Esser за что ему большущее спасибо. С помощью него можно расшифровывать в несколько проходов например монстров закодированных через www.php-crypt.com функциями eval, gzuncompress, base64_decode и тд.

Установка evalhook

Скачиваем архив с исходниками

Распаковываем и собираем расширение для PHP

расширение готово, теперь его можно динамически подгружать в консоль и смотреть зашифрованный скрипт.

где encoded_script.php — закодированный файл.
Для получения исходного кода просто жмем «Y» несколько раз в процессе деобфускации. Каждый новый Y будет расшифровывать следующий eval. Ну что ж вооружимся консолью и в бой!

Деобфускация и декодирование

1-й eval расшифровали, нужный нам код находится между символами»—-«. Впоследствии после всех шагов нужно будет его скопировать в файл. Нажимаем Y и продолжаем расшифровывать.
2-й проход:

Ну вот и всё, дальше продолжать нет смысла, потому что внутри нашего шифрованного файла, как видно по коду, includ’ится еще один зашифрованный файл, но мы его потом отдельно расшифруем. Главное правило сколько у нас eval, столько раз жмём Y, иначе наш скрипт выполнится вплоть до исполнения кода целиком, нам это не нужно.

Собираем полученное в один файл

Копируем содержимое всех расшифрованных eval (код между —-) в блокнот, я получил вот такую картину:

Чтобы не было всё в каше без пробелов пропустим это добро через php beautifier, дабы получить нормальные отступы.

Наш код уже становится похож на человечный

Далее, видим что вместо привычных нами функций, в файле определены глобальные переменные с их именами, чтобы нам расшифровать их имена, и не заниматься этим вручную, после последнего определения $GLOBALS[‘_888028985_’] = Array(… сделаем var_export, выглядеть будет примерно так:

сохраним полученный код в тот же файл и выполним его просто через консоль (можно и в браузере):

получаем заветные названия функций:

Далее последняя стадия, замена всех функций из глобального массива ($GLOBALS[‘_888028985_’]) на их настоящие аналоги.
Но для начала удалим все вспомогательные куски (те что идут до var_export($GLOBALS[‘_888028985_’]);die;).
Как вы поняли обфускатор первые три eval’a использовал для 3х разового кодирования функций в глобальный массив $GLOBALS[‘_888028985_’], в четвертом eval’e все настоящие функции были заменены их псевдонимами из $GLOBALS[‘_888028985_’], поэтому нам нужно оставить только четвертый раскодированный код, первые три раскодированных куска, включая наш код для вывода ($GLOBALS[‘_888028985_’]) нам больше не нужны.

Окончательная замена функций:

Есть два пути решения:
1) вручную поиск всех строк типа $GLOBALS[‘_888028985_’][. ]() и замена их на соответствующий им ключ в расшифрованном массиве функций.
2) автоматом, я выбрал этот вариант, так как файлов было много, я написал простенький скрипт __decode.php для автозамены данных функций, привожу его код тут.

в итоге в файле unencoded_script_full.php будет полностью искомый скрипт с нормальными функциями, полученный код смотреть здесь.

Кстати деобфускация помогла мне решить проблему, из-за чего не работал скрипт, но это уже другая история…

P.S. Естественно скрипты могут быть зашифрованы различными и более ухищренными способами и мой способ не панацея, я лишь показал логику дешифровки таких скриптов. Например некоторые обфускаторы могут всем переменным присвоить другие имена, и понять логику таких скриптов уже будет сложнее.

UPD от автора скрипта:

zuziken (20:30:15 2/02/2012)
*THUMBS UP*
zuziken (21:10:42 2/02/2012)
Спс за обзор, но код пишет программист, а не я:-)

Оцените статью