IonCube для начинающих. Ликбез. С чего начинается успешная защита php кода.

sitecreator

Administrator
Команда форума
Автор: sitecreator.ru Просьба при перепечатке данного текста ссылаться на данную страницу форума с указанием автора.

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

Одним из успешных инструментов для защиты вашего кода являются инструменты шифрования (кодирования) вашего кода от компании ionCube Ltd.
Файл с программным кодом после обработки ioncube-кодировщиком (encoder-ом) принимает непригодный для анализа человеком вид, т.е. бессмысленный для анализа набор символов, который ничего общего с программным кодом не имеет.

Чтобы такой зашифрованный (закодированный) код мог исполняться на сервере нужно чтобы для движка php было подключено расширение ioncube loader. У любого хостинг-провайдера на общем хостинге (виртуальный хостинг) всегда есть данное расширение для php и оно практически всегда включено по умолчанию. Обычно у пользователя хостинга есть возможность самостоятельно включать/отключать и выбирать версию ioncube loader-а для конкретной версии php. Всегда рекомендуется чтобы версия ioncube loader-а (ионкуб лоадера) была максимально актуальной (свежей) у вашего хостера. На сегодняшний день это версия 10+ (10.3.2 по состоянию на 2 января 2019-го).


Вы всегда можете проверить наличие ioncube в php если напишите простой код с функцией phpinfo(). Код выводит всю необходимую информацию. Включая версию лоадера.

PHP:
<?php
phpinfo();
?>
Вас должна интересовать эта строка в выводе phpinfo():

with the ionCube PHP Loader v10.3.2, Copyright (c) 2002-2018, by ionCube Ltd.
Покажу фрагмент вывода:





Зашифрованный ионкубом (ионкуб энкодером) код выглядит так:




Сам ioncube encoder - это по-сути набор нескольких консольных программ, версии которых есть под Windows и Linux. Под Windows также есть графическая оболочка, которая сильно упрощает изучение данного продукта для защиты программы. Эта оболочка называется Encoder GUI, и кроме красивого и удобного интерфейса для консольных программ "ioncube encoder" ничего большего не представляет. Т.е. энкодер ионкуба может работать вовсе без этого графического интерфейса.

Под Windows ioncube устанавливается также как любая другая программа. После установки и запуска программы происходит обычно автоматическая активация лицензии в режиме онлайн. Либо есть еще вариант активации ключом, который вы получите после покупки этой программы.
Кстати, деактивация программы на Windows происходит обычным удалением стандартными средствами Windows через uninstaller. После этого вы можете установить эту программу на другую машину под Windows. Обновление происходит аналогично - сначала деинсталлируется установленная версия, а потом заново устанавливается новая. Поверх предыдущей не надо ставить, это не соответствует инструкции производителя (на момент написания данной статьи).

После установки и активации вы можете скопировать (без переноса и удаления, именно скопировать - иное не пробовал) установленные файлы ионкуба в удобную вам папку. Я, например, скопировал в папку
Код:
C:\ioncube\
Просто мне так удобнее работать с консольными приложениями, т.к. после обновления программы мне не нужно думать о новых путях, по которым установилась программа, т.к. каждая новая версия обычно ставится по новому пути.
И вы можете просто запустить в консоли команду

Bash:
C:\ioncube\ioncube_encoder71.exe -V
Разумеется, если скопировали в эту папку файлы установленного ионкуба. Получите вывод информации о версии энкодера и поддержке php.






Есть много вкладок со всевозможными настройками.





Но Encoder GUI просто подготавливает командную строчку для последующего запуска через консоль (терминал - "командную строку ) операционной системы, в нашем случае windows. Подготавливает и автоматически запускает, а также получает ошибки из консоли если они есть и выводит в этот графический интерфейс.

Вы всегда можете увидеть какая же командная строка была сформирована. И можете запустить ее при желании через Windows cmd или Windows PowerShell (который есть аналог cmd ). Для этого выбираете в меню пункт "View Encoder Command Line" (Показать командную строку для энкодера).




Пример командной строки показан ниже.
Как вы можете видеть, то запускается консольная программа с параметрами. В данном случае это энкодер для php 7.1.
Т.е. вот эта программа: ioncube_encoder71.exe

Bash:
"C:\Program Files (x86)\ionCube Pro PHP Encoder 10.2.1\ioncube_encoder71.exe" --exclude "*.*" --encode "*.php" --encode "*.inc" --add-comment "This is a simple encoded php file" --dynamic-key-errors "normal" --ignore-strict-warnings --obfuscate "linenos" --replace-target --copy "@\config\config.inc" --ignore "@\LOCAL README.txt" "MyProject" -o "encoded-projects\Basic Encoding - Encoded"
Энкодер - это всегда программа "x86" для 32-битной системы (но работает без проблем на 64-битных ОС. Просьба учесть данный момент и не экспериментировать на windows (под Open Server, например) с php x64, а только с php x86, иначе у вас закодированный файл не будет работать. Не стоит волноваться о том будет ли всегда работать на сервере (под Centos x64, Ubuntu x64 и др. Linux) - будет всегда, об этом хостер уже позаботился. На VDS нужно не забывать включать расширение ioncube loader.

Под Windows рекомендуется проводить тестирование с использованием Open Server.
Пример правильного (в случае тестирования результатов под windows выбора) php (показаны настройки Open Server) - php-7.0, но не php-7.0-x64 (это неправильно). Для тестов обычных скриптов (незакубированных) это не имеет значения, но для скриптов после энкодера это имеет значение.




Если в вашем Open Server для конкретного php не подключено расширение ioncube loader, то сделайте это самостоятельно. правка производится в конфиге php.ini для конкретной версии php. Только не надо пытаться править файлы напрямую, делайте через меню Open Server.
Это делается так (откроется блокнот, после правок нажать "сохранить" и перезапустить Open Server):



Код:
[Ioncube Loader]
zend_extension="%sprogdir%/modules/php/%phpdriver%/ext/ioncube_loader_win_7.0.dll"


Если вы выбираете в настройках проекта (Project Settings) версию php 5.6, то закодированные (ioncube encoder-ом) файлы будут работать как под версией php 5.6, так и под версией 7.0. Не пытайтесь искать отдельно версию под 7.0, такой не существует.
Соответственно кодировку для указанных версий будет выполнять программа ioncube_encoder56.exe.

Также если файл закодирован программой ioncube_encoder71.exe, то этот файл будет запускаться как под php 7.1, так и под php 7.2. Если вы работаете в графическом интерфейсе (GUI), то выбираете в этом случае PHP 7.1.

Не могу рекомендовать выбирать режим "PHP 5.6 & 7.1", т. к. наблюдал проблемы на ранних версиях ioncube loader-а 10. На более поздних проблем не замечал, но даже если вы укажите в требованиях использовать ioncube loader 10+, то не можете исключить ситуацию, что на сервере окажется одна из первых "10-к", которая не лишена некоторых багов.






Выдержка из официальной документации:

2.1 PHP Compatibility
To achieve the best performance and security we recommend encoding using PHP 5.5 language
setting or higher, but preferably PHP 5.6. With ionCube it is possible to encode one set of files
and run those on multiple PHP versions.
For example, files encoded using the PHP 5.5 source language setting can be run on machines
running versions 5.5 and 5.6. Files encoded with the PHP 5.6 language setting can run on both
PHP 5.6 and PHP 7.0 machines. Files encoded with the PHP 7.1 language setting can be run on
both PHP 7.1 and PHP 7.2 machines.
Note that compatibility settings can be restricted based on which version of the Loader you have
installed, so we advise that an up-to-date loader is used.
Перевод:

2.1 PHP-совместимость
Для достижения максимальной производительности и безопасности мы рекомендуем кодирование с использованием настроек для языка PHP 5.5 или выше, но желательно PHP 5.6. С помощью ionCube можно кодировать один набор файлов
и запустить их на нескольких версиях PHP.
Например, файлы, закодированные с использованием настроек исходного языка PHP 5.5, можно запускать на компьютерах, использующих версии 5.5 и 5.6. Файлы, закодированные с настройкой языка PHP 5.6, могут работать на обоих машинах: PHP 5.6 и PHP 7.0. Файлы, закодированные с настройкой языка PHP 7.1, можно запускать на машинах с PHP 7.1 и PHP 7.2.
Обратите внимание, что параметры совместимости могут быть ограничены в зависимости от того, какая у вас версия Loader-а установлена, поэтому мы рекомендуем использовать новейший загрузчик.

продолжение следует
 
Последнее редактирование:
Верх