ИонКуб представляет собой набор утилит командной строки, которые позволяют выполнять кодирование, запутывание и лицензирование исходного кода, написанного на 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 #Разработка сайтов
-
Европейский Инвестиционный Банк (Еиб)
19 Oct, 24 -
Одиночные Большие Типы
19 Oct, 24 -
«Мы Все Понимаем, Что Майер Был Обречен».
19 Oct, 24 -
Если Вы Решили Внедрить Erp-Систему
19 Oct, 24