ioncube что это такое

Ликбез по IonCube

IonCube — это набор утилит для командной строки, которые позволяют производить кодирование, обфускацию и лицензирование исходного кода, написанного на языке php.
Функционал IonCube очень обширен что бы о нем можно было написать в одной статье. Под катом я опишу основной функционал IonCube, который необходим для защиты кода от не лицензионного использования.

Список понятий

1. Кодирование исходного кода — процесс при котором исходный код, написанный на языке php, превращается в набор машинных команд, чтение и декодирование которых максимально затруднено.

2. Обфускация — приведение исходного кода программы к виду, сохраняющему ее функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию.

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

Необходимое ПО

1. IonCube Encoder — набор бинарных файлов для разных ОС, при помощи которых можно кодировать исходный код, производить его обфускацию и генерировать лицензии. Платное ПО, но можно скачать триал версию.

Кодирование и обфускация исходного кода

В зависимости от версии PHP под которую написан код, IonCube Encoder предоставляет следующие бинарные файлы для выполнения кодирования и обфускации: ioncube_encoder, ioncube_encoder5 или ioncube_encoder53
Формат команды следующий:

./ioncube_encoder –o [options]

Ниже я перечислю основные опции необходимые для кодирования и обфускации кода:

—replace-target — опция говорит енкодеру что надо полностью заменить целевой каталог или файл, если он уже существует, новым каталогом или файлом. Например:

—copy @ — опция говорит енкодеру что надо копировать указанный файл или каталог (и все его подкаталоги) без кодирования его содержимого. Знак @ говорит о том, что путь к копируемому файлу или директории надо искать от корня кодируемой директории. Т.е. если было указано копировать каталог configs, то будет копироватся только каталог configs котороый лежит в корне кодируемой директории, а не например в подкатегории example/configs. В качестве примера можно привести каталог где лежат конфигурационные файлы и которые кодировать не нужно:

—ignore @ — опция говорит енкодеру что надо игнорировать указанный файл или директорию (и все ее поддриректории), при этом в результирующий каталог они не копируются.

—obfuscate — запускает процесс обфускации кода, в качестве объектов, к которым применяется обфускация могут быть: functions, linenos, locals или all. Например:

—obfuscation-key «some_unique_key» — обязательный параметр для обфускации, который задает уникальный ключ, что делает практически невозможным процесс декодирования кода.

— опция говорит энкодеру, что файл при запуске должен запрашивать файл лицензии. Путь к файлу лицензии будет относителен запросившему его файлу, так что лучше здесь указывать просто название файла лицензии, который IonCube Loader будет искать сперва в том же каталоге, в котором находится скрипт, запросивший файл лицензии, а не найдя будет идти рекурсивно в верх вплоть до корневой директории. Таким образом файл лицензии можно сохранять просто в корневом каталоге, куда установлено ваше приложение. Например:

Создание лицензии

Лицензии создаются при помощи бинарного файла make_license. Формат команды для создания лицензии:

./make_license –-passphrase –o

—passphrase — эта опция задает секретный ключ, который используется для формирования подписи для лицензии. Внимание: ключ должен совпадать с ключем, который использовался при кодировании исходного кода.

Ограничение лицензии по серверам

—allowed-server [ ][@[ ]][< >] — эта опция используется для ограничения валидности лицензии по домену, IP или MAC адресу сервера, для которого она предназначена.

Читайте также:  что делает актовегин в организме

Примеры.
1. Ограничение по домену:
—allowed-server www.foo.com
—allowed-server www.foo.com,www.bar.com
—allowed-server 1.2.3.4@

2. Ограничение по IP адресу:

—allowed-server 192.168.1.4
—allowed-server 192.168.1.4,192.168.1.20

Примечания:
1. Когда закодированный файл запрашивается через web-сервер, то IP сверяется с тем IP, который присылает web-сервер.
2. Когда закодированный файл запрашивается на прямую, например когда имеем дело с php shell скриптами, то IP сравнивается только с первичным IP адресом сетевого интерфейса.
3. Нельзя указать в ограничении IP адрес 127.0.0.1

3. Ограничения по MAC адресу. MAC адрес должен состоять из 6-ти байт и должен быть представлен в шестнадцатеричном виде, например:

4. Комбинирование ограничений. IonCube позволяет комбинировать ограничения, например:

Ограничение лицензии по времени

— позволяет задать период, на протяжении которого с момента генерации лицензия является валидной. Периоды можно задавать в следующих величинах: секунды (s), минуты (m). часы (h) или дни (d). Например:

—expire-in 360s
—expire-in 20m
—expire-in 24h
—expire-in 365d

—expire-on — позволяет задать точную дату, до которой лицензия является валидной. Например:

Установка IonCube Loader

1. Скачайте IonCube Loader для вашей ОС, он распространяется бесплатно.

3. В вашем php.ini пропишите путь к скачаной библиотеке. Например:

zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3.so
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3_ts.so
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_5.2.so

Обратите внимание что для PHP версией меньше 5.3 нужно указывать директиву zend_extension_ts если в хотите использовать библиотеку с функционалом «thread safety».

4. Перезагрузите web-сервер.

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

Источник

Пасхалка в ionCube — попытка разработчиков замести мусор под ковер?

Веб-разработчик знает, что скрипты, созданные в коммерческих целях, могут пойти гулять по сети с затёртыми копирайтами; не исключено, что скрипт начнут перепродавать от чужого имени. Чтобы скрыть исходный код скрипта и препятствовать его изменению, применяются обфускаторы, минификаторы и т.д. Один из самых давних и известных инструментов для шифрования скриптов на PHP — это ionCube. Появившийся в 2002, он продолжает следить за развитием PHP и заявляет о поддержке последних версий платформы. Как я покажу в этой статье, с поддержкой PHP 7 у ionCube далеко не всё в порядке.

Модель использования PHP-шифровщиков такая, что программист продаёт зашифрованный скрипт, а покупатель скрипта на своём сервере должен установить модуль расширения, который позволит выполнять зашифрованные скрипты. Скрипт, зашифрованный ionCube, выглядит примерно так:

Видно, что выводимая строка не зависит от вызванной функции, и выбирается случайно.

Напрашивается вопрос: зачем эти функции нужны, и что они делают?

Простые эксперименты

Для начала посмотрим, какие параметры _dyuweyrj4 принимает:

Похоже, что принимает два числа, но какие бы числа ни были, печатает те же самые афоризмы.

Поиск использования

На каком-то мутном индонезийском форуме удаётся найти запощенный в 2013 пример — скорее всего, полученный каким-то дизассемблером байткода PHP:

Что интересного в парах чисел (21711392, 920173696) и (21720496, 920165136)? Внимательный исследователь заметит, что XOR чисел в каждой паре даёт 932443808. Попробуем сами вызвать _dyuweyrj4 с парой чисел, дающих в результате XOR 932443808:

Читайте также:  какой объем кислорода в баллоне 50 литров

Не напечаталось ничего!

Погружаемся в отладчик

— через их Online PHP Encoder. (Результат шифрования приведён в самом начале поста.) К сожалению, это не помогает: _zend_op_array.reserved[3] остаётся нулевым. Зато убеждаемся, что у выполняющейся (безымянной) функции _zend_op_array.reserved[3] теперь заполняется:

Баг багом вышибают

Что получится, если пофиксить баг в ioncube_loader_win_7.3.dll, поставив проверку указателя перед его использованием? Для этого удобнее всего использовать x64dbg:

Значит, от (некорректной) проверки на нулевой указатель толку всё равно не было: в следующей вызываемой функции этот же указатель используется уже без проверки. Делаем вывод, что потенциальная уязвимость, позволявшая бы нам изменять память процесса PHP по произвольному адресу, и посредством этого сбежать из сэндбокса — например, вызывать функции, запрещённые администратором сервера — в ionCube Loader «закрыта» последовательностью багов, приводящих к непреднамеренному крэшу php.exe.

Что имел в виду автор?

Источник

Как установить ionCube?

Зачем нужен ionCube и как проверить его наличие

ionCube — это популярный способ шифрования php-файлов. Он бесплатный, скачать его можно прямо с официального сайта. В JBZoo практически весь код открыт, за исключением мест проверки лицензии. Начиная с версии 2.0.0 для корректной работы JBZoo обязательна поддержка модуля ionCube Loader.

ionCube и хостинг

На большинстве современных хостингов ionCube уже есть, и его нужно только подключить простым щелчком мыши. В противном случае, вы можете задать вопрос в техподдержку хостера и практически всегда его включают по первому запросу.

Как самостоятельно проверить наличие ionCube?

Способ #1

Информация из функции phpinfo(). Создайте PHP-файл с функцией phpinfo(), залейте на сайте и перейдите на него в браузере.

Способ #2

Запустите loader-wizard.php. Это официальный скрипт, который помогает определить текущую версию модуля, либо помочь в его установке. Если все хорошо, то вы увидите примерно следующую картину

Способ #3

Установите JBZoo 2.0 +. Если приложение запустилось, то все в порядке. В противном случае вы увидите следующее

Как самостоятельно установить модуль на свой сервер?

Скачайте loader-wizard.php и запустите его на своем сайте. Следуйте советам мастера установки. Он поможет определить, какой именно файл нужно скачать (ориентированный именно на вашу версию PHP) и что с ним делать дальше.

Cкачать предложенный ZIP-архив.

Распаковать в папку, указанную в пункте 2.

Указать путь до этого файла в файле php.ini с помощью строки следующего типа.

Внимание! Локальные сервера вроде Denwer и Open-Server зачастую имеют у себя в комплекте этот модуль. Поэтому перед установкой проверьте его присутствие.

Если после перезагрузки сервер не запускается, то скорее всего:

Источник

Как установить ionCube и для чего нужен этот модуль

Сегодня поговорим о специальном модуле — ionCube, что это такое и для чего он нужен. Разберёмся, как установить ionCube loader на сервер. Лично мне он требуется для установки популярного среди пользователей joomla! и zoo приложения JBZoo, В этом посте я поясню как установить модуль ionCube на локальный сервер и на сервер вашего хостинга.

Итак, что такое ionCube?

Навигация по тексту

Программное обеспечение ionCube loader — это популярный способ шифрования php-файлов. Модуль полностью бесплатный и скачать его можно с официального сайта по ссылке: http://www.ioncube.com/loaders.php

Читайте также:  bgmonitor в автозагрузке что это

Некоторые приложения требуют наличие этого модуля, в частности приложение, которое я часто использую в своей работе — JBZoo. Начиная с версии 2.0.0 для корректной работы JBZoo обязательна поддержка модуля ionCube Loader.

Большинство современных хостингов уже поддерживают модуль ionCube. В противном случае, вы всегда можете задать вопрос в техподдержку хостера и практически обычно его включают по первому запросу.

Как самостоятельно проверить наличие ionCube на сервере?

Как самостоятельно установить модуль ioncube на локальный сервер?

Если после перезагрузки сервер не запускается, то скорее всего

Как самостоятельно установить модуль ioncube на хостинг?

Как я уже говорил, большинство хостингов уже содержат включённый модуль ioncube, либо подключают его при первому требованию. Вот, к примеру, как рекомендуют подключать модуль на хостинге logol.ru:

Выполните следующие действия:
-скачайте библиотеку для архитектуры Linux (x86-64) в виде tar.gz или zip-архива с сайта http://www.ioncube.com/loaders.php
-разархивируйте файлы библиотеки (в результате появится каталог ioncube)
-загрузите каталог ioncube в домашний каталог

/ на вашей хостинговой площадке
в каталоге, где находится PHP-скрипт, для которого подключается ionCube,
-создайте файл php.ini со следующей строкой:
zend_extension=»/home/ВАШ_ЛОГИН_НА_CPANEL/ioncube/ioncube_loader_lin_5.2.so»
Пример:
zend_extension=»/home/cp123456/ioncube/ioncube_loader_lin_5.2.so»

Важно:
Указанная выше строка должна быть самой первой из всех подключаемых zend_extension.

Как видите, установить ioncube на сервер достаточно просто. Если возникнут вопросы, задавайте их в комментариях, постараюсь ответить.

Источник

Принципы работы и возможности утилиты IonCube

Инструмент для защиты программного обеспечения IonCube написан на языке PHP еще в 2002 году, но и до сегодня активно используется специалистами в области системного администирования.

Принципы установки IonCube на сервер. Если Вы хотите установить библиотеку PHP на свой сервер, Вам понадобятся полные доступы к нему. Это без проблем можно сделать на выделенном сервере или услуги VPS. Но даже на некоторых виртуальных хостингах можно включить поддержку ionCube и выбрать версию Loader-а. На тарифах виртуального хостинга HyperHost данную функцию также можно включить в настройках PHP.

Для чего используют IonCube? Инструмент IonCube используют для разных целей, например, веб-студии могут использовать данную технологию для защиты своих PHP приложений от несанкционированного доступа к исходному коду. Много приложений требуют присутствие IonCube для корректной работы. Если вы купили скрипт, а он защищенный ioncube encoder’ом, то обратите внимание на наличие ioncube loader’а на виртуальном хостинге, которым Вы пользуетесь.

Модуль полностью бесплатный и скачать его можно с официального сайта ioncube.com. Данное ПО обеспечивает дешифрацию и эффективное выполнение откомпилированного и зашифрованного php кода.

Если Вы хотите защитить код от несанкционированного использования, рекомендуется самостоятельно установить IonCube на свой сервер (конечно же, это может сделать техподдержка хостинг-провайдера, у которого Вы держите сервер). Для установки IonCube следует проделать несколько несложных шагов.

После установки утилиты можно воспользоваться основными функциями IonCube : производение кодирования, обфускации и лицензирование исходного кода.

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

Надеемся, Вы нашли ответы на интересующие вопросы в данной статье! Если понадобится дополнительная помощь или информация, обращайтесь в круглосуточную техподдержку Hyper Host™, мы всегда будем рады помочь!

Источник

Сказочный портал