Ликбез На Ioncube

ИонКуб представляет собой набор утилит командной строки, которые позволяют выполнять кодирование, запутывание и лицензирование исходного кода, написанного на PHP. Функционал IonCube настолько обширен, что о нем можно написать в одной статье.

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



Список концепций

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

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

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



Необходимое программное обеспечение

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

Платное ПО, но возможно скачать Пробная версия.

2. IonCube Loader — поставляется в виде библиотеки .

so или .

dll, необходимой для декодирования исходного кода, закодированного с помощью IonCube Encoder. Бесплатное программное обеспечение, вы можете скачать здесь .



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

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

.

/ioncube_encoder <source_file_or_folder> –o <target_file_or_folder> [options]

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

Например:

.

/ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target

--копировать @ — опция указывает кодировщику скопировать указанный файл или каталог (и все его подкаталоги) без кодирования его содержимого.

Знак @ указывает, что путь к скопированному файлу или каталогу необходимо искать от корня закодированного каталога.

Те.

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

.

/ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --copy @configs/

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



.

/ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --ignore @docs/

--запутать — запускает процесс обфускации кода; объектами, к которым применяется обфускация, могут быть: функции, линены, локальные жители или все.

Например:

.

/ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --obfuscate all

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



.

/ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --obfuscate all --obfuscation-key "It is unique key :)"

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

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

файл находится, и если он не найден, он рекурсивно перейдет к началу корневого каталога.

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

Например:

.

/ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --with-license license.txt

--парольная фраза — секретный ключ, с помощью которого шифруются файлы.

Внимание : Файл лицензии должен быть создан с тем же секретным ключом.

Обязательный параметр, если параметр используется

--with-license

.



.

/ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --with-license license.txt --passphrase some_passphrase



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

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

.

/make_license –-passphrase <key> –o <output-path>

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

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



Ограничение лицензии на сервер
--allowed-сервер [ ][@[ ]][{ }] — данная опция используется для ограничения срока действия лицензии по домену, IP или MAC-адресу сервера, для которого она предназначена.

Примеры.

1. Ограничение домена:

--allowed-server www.foo.com --allowed-server www.foo.com,www.bar.com --allowed-server 1.2.3.4@

Символ «@» в конце домена означает, что хотя домен и похож на IP-адрес, его следует воспринимать как домен.

Внимание : IonCube Loader использует конструкцию для определения домена.



$_SERVER['SERVER_NAME']

.

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

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

Примечания: 1. Когда закодированный файл запрашивается через веб-сервер, IP-адрес сверяется с IP-адресом, который отправляет веб-сервер.

2. Когда закодированный файл запрашивается напрямую, например, когда мы имеем дело со скриптами оболочки PHP, IP-адрес сравнивается только с основным IP-адресом сетевого интерфейса.

3. В ограничении нельзя указать IP-адрес 127.0.0.1. 3. Ограничения по MAC-адресу.

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

--allowed-server '{00:01:02:06:DA:5B}'

4. Комбинация ограничений.

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

--allowed-server '[email protected]{00:02:08:02:e0:c8}'



Срок действия лицензии
--expire-in — позволяет установить срок, в течение которого с момента генерации действует лицензия.

Периоды можно указывать в следующих количествах: секунды (с), минуты (м).

часы (ч) или дни (д).

Например:

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

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

Например:

--expire-on 2012-03-20



Установка загрузчика IonCube

1. Скачать Загрузчик ионкуба для вашей ОС распространяется бесплатно.

2. В архиве вы найдете по два файла с расширением .

so или .

dll для каждой версии php, один из них будет иметь постфикс «ts», что означает, что для этого файла активен функционал «потокобезопасности».

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, если вы хотите использовать библиотеку с функцией «потокобезопасности».

4. Перезапустите веб-сервер.

Это, по сути, все, что вам нужно знать, чтобы защитить свой код от нелицензионного использования.

Более подробную информацию вы можете найти на официальном сайте ИонКуб .

Теги: #ioncube #encoder #loader #Разработка сайтов

Вместе с данным постом часто просматривают: