Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...
  • записи
    3
  • коментаря
    183
  • перегляду
    4 154

Ioncube loader 12 и баги, которые он уже принес. Веселье впереди! Ионкуб стал злым.


sitecreator

1 051 перегляд

После перехода некоторых хостеров на Ioncube loader 12  с 10-й или 11-й версии начали появляться чудеса в виде ошибок, которых никогда не было ранее, А именно:

 

PHP Warning:  [obfuscated](): Null byte in regex in 

 

При том, что код абсолютно валидный. И никаких проблем на 10-й или 11-й версии ioncube loader не возникало на любой версии php от 5.6. до 7.4.

Откуда же взялись нулевые байты в regex?

 

 

  

Программистам может быть интересно.

 

Исходный код:

 

$pattern_for_tags = '';
echo "\nЭто тоже 000 pattern_for_tags\n";
echo $pattern_for_tags;

 

элементарнейший код.

Присвоили переменной пустую строку. И сразу же вывели ее. Ожидали, что будет выведена пустая строка. Т.е. на выходе не будет ничего.

 

а вот, что имеем на выходе с ioncube loader 12-й версии:

 

9dQ53mv.jpeg

 

смотрим в браузере в "исходный код".

php + ионкуб превратили пустую строку в последовательность шестнадцатеричных нулей.

Чудеса? Нет, это баг.

 

Т.е. ионкуб пихает в строки последовательности нулей.

И это даже будет незаметно до поры, до времени. Т.к. браузер даже не чихнет на эти лишние нули, т.к. он их просто не отобразит. И вам будет казаться, что все работает.

Но как только вы такую строку захотите использовать как паттерн для регулярного выражения, то php начинает ругаться на нули, т.к. они, действительно, там появились.  И впихнул их именно ioncube loader 12-й версии по одному ему ведомой прихоти.

И делает он это не закономерно, т.е. в начале кода эта строка будет обработана нормально, например, но в другом месте будут подставлены нули.  Т.е. тут как повезет.

 

Проблема к коду PHP не имеет никакого отношения.

 

Я даже посмотрел исходник на PHP в hex формате. А не затесался ли там нечитаемый символ?

Нет. Там четко есть пустая строка - это только кавычки, и больше ничего.

 

 

OST9msL.jpeg

 

Думаю, что в лоб это можно попробовать вылечить используя энкодер 12-й.

 

 

 

 

 

  

PHP Warning:  [obfuscated](): Null byte in regex in 

 

вот такая ошибка движка PHP появляется при смене ioncube loader на 12-ю версию.

сопровождаться может также 503-й ошибкой сервера и т.д.

на деле нет никаких null byte в regex. Речь про исходный код и про переменные в процессе выполнения. Специально смотрел с отладкой. Чистой воды баг от ионкуба.

 

Если в журнале ошибок опенкарт увидите вышеприведенную ошибку (Null byte in regex), то смотрите версию ионкуба.

через phpinfo(). Ее генерирует именно 12-й ионкуб.

 

blvgT91.jpeg

 

KhgSIOC.jpeg

Версию ioncube loader меняет хостер на общем хостинге. Релиз 12-й ioncube loader стартовал в середине августа 2022-го.

Т.е. пока крайне сырая версия, но некоторые хостеры поспешили уже перейти с 11-й на 12-ю. Хотя обычно дают устаканиться сырому продукту, т.е. дожидаются когда массовые баги отловят в первые несколько месяцев. Месяц-два - это не срок чтобы такого рода продукт перестал быть сырым.

Пользователям VDS автоматический переход на 12-ю не грозит.

 

Не возникает проблем на любой версии PHP от 5.6 до 7.4 включительно с ioncube loader  10-й или 11-й веток.

 

 

Многие хостеры дают возможность выбора версии ioncube loader. Во избежание проблем выбирайте 10-ю или 11-ю версию.

 

По идее компания ioncube старается обеспечить обратную совместимость программ (и энкодеров более ранних версий) со всеми версиями ioncube loader.

Но когда это не получается у компании ioncube , то она предлагает перекодировать программы новым энкодером, т.е. энкодером 12-й версии чтобы не было проблем с ioncube loader 12-й версии.

Так компания ioncube видит работу над устранением багов, порожденных самой же компанией ioncube.

Чтобы устранить баг компания ioncube предлагает купить 12-й энкодер.

 

 

 

 

И все могло бы быть не так страшно, но баг ioncube напоролся на признанный баг самого движка php, который описан здесь:

 

https://bugs.php.net/bug.php?id=77726

 

Т.е. это поведение официально признано багом и известно разработчикам PHP.

 

вот ссылка на фиксы данного бага:

https://github.com/php/php-src/pull/8114

 

 

Но хостеры не спешат ставить обновленную версию PHP, в которой отсутствует данный баг.

 

В принципе этот баг самого PHP и не проявился бы если бы ioncube loader не напихал нам нулевых байтов.

 

вот тест:

 

<?php

preg_match("/a".chr(0)."bc/", 'abc');

 

 

запустите этот код. Если вы увидите сообщение об ошибке:

 

Warning: preg_match(): Null byte in regex in ...\preg00.php on line 3

 

то это значит, что у вас еще версия PHP с багом.  А хостер не заменил ее на версию без бага.

 

Итого, что имеем?

Удивительный случай когда баг ioncube loader встретился с багом движка PHP.

При совершенно валидном изначальном  коде.

 

 

 

 

От аномального поведения невозможно избавиться.

удаляем NULL байты, но вместо удаления либо появляются новые, либо удаляются только конечные и начальные.

Чудеса! Точнее, это баги.

 

Пробовал так бороться:

 

$pattern_for_tags = '';

$pattern_for_tags = str_replace("\0", '', $pattern_for_tags);
echo "\nЭто тоже после удаления NULL-ей pattern_for_tags\n";
echo $pattern_for_tags;

$pattern_for_tags = trim($pattern_for_tags);
echo "\nЭто тоже после TRIM pattern_for_tags\n";
echo $pattern_for_tags;

 

Но, как говорится фиг вам.  php с кубом стоят на своем.

 

ADyNWZD.jpeg

 

видимо, без покупки енкодера 12 удивительный баг не побороть.

Хороший маркетинговый ход у разработчиков ионкуба. Создать баг в новом loader-е, для исправления которого нужно купить новый энкодер 12-й версии за $300.

Видать, с продажами энкодера 12-го совсем плохо.

Да и зачем он нужен то?

Поддержки php 8 в нем нет и не будет. А кому нужна поддержка 8.1, собственно, для которой он и сделан?

 

И, не факт, что применение 12-го энкодера позволит решить проблему. Это как лотерея.

Может быть, что это неустранимый пока баг 12-й версии ioncube loader-а.

 

ioncube репутацию свою подпортили, подложив такую свинью...

Проблемный получился продукт № 12.

 

По-хорошему нужно отказываться от применения ioncube. Тем более, что для 8-й версии PHP его нет и не будет никогда. Но есть для 8.1. Для 8-ки они вообще решили не делать.  Какой-то удивительный подход у разработчиков ioncube.

Змінено користувачем sitecreator

  • +1 1

3 коментаря


Recommended Comments

Так что, теперь ваш модуль webp можно не сносить и после него пустые переменные другого кода не будут менять свои значения с false на true?

  • +1 1
Надіслати

Черговий раз піднімемо питання доцільності використання кодування взагалі і згадаємо порушення GNU по якій розповсюджується все що пов'язано з opencart чи в черговий раз закриємо очі і продовжимо використовувати баговане, що створює геморой всім від розробника до користувача?

  • +1 5
Надіслати

 

На фоне пока неустраненного бага в ioncube loader 12.0.2     ( релиз от 2022-09-09)

компания ioncube решила поднять цены на энкодеры.

Pro версия вместо $299 стоит теперь $344.

 

На фоне обнаруженного бага неплохой коммерческий ход? Можно пока не спешить с устранением бага в ioncube loader 12, но при этом намекнуть, что баг можно обойти за счет покупки нового энкодера.  Вроде как у разработчиков и выхода другого нет, так почему бы заодно и цену не поднять?

 

Непонятно как некоторые хостеры ухитрились поставить настолько сырой и непроверенный софт?

Куда и зачем они так торопились, что поставили софт, которому меньше месяца с момента самого первого релиза 12-й?

Подождать несколько месяцев до стабильной (исправленной от багов) и проверенной версии никак нельзя было?

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

 

Матерые хостеры, например, никогда не торопятся. Для них важна стабильность и репутация.

 

Я бы еще понял установку ioncube loader 12 для php 8.1, там хотя бы смысл есть. Но для предыдущих версия php нет смысла.

 

C469a8u.jpeg

Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.