После отмены zend’a и введения компанией 1с-Битрикс обфускации кода своих продуктов, появилось желание проверить — так ли хороша защита DEMO-версии системы. Ниже рассмотрим несколько простых и не очень способов восстановить работоспособность сайта после истечения тестового периода.

Статья скрыта по просьбе представителей компании 1с-Битрикс.

Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!

Подписаться в telegram

78 комментариев “Анализ защиты кода Битрикс или «как сделать DEMO бесконечной»

  1. Diden05

    Насколько я помню у битрикса есть возможность обновлять демо версию, ну а тех поддержка это да, проблема.

  2. Димон

    Пробовал 5 вариант, конечно не програмист и то что зделал вроде ничего неполучилось.
    Если можно то маленький мануальчик на примере рабочего файла, а то как то то переимен, то так пример кода вставь, при переименовании : имя функции из вида ‘___344590092? в ‘func1? денвер вообще вываливает ощибка в строке 1 файла include.php/
    за подробный мануальчик заранее сбасибо от всех у кого ручки не золотые.

  3. Алексей Валеев

    Димон, я сознательно не публиковал куски оригинального кода из битрикса.
    Насчет расшифровки — include.php надо скопировать в отдельную директорию и издеваться над ним там:)

  4. Сергей

    Код и впрямь весьма читаемый, только некоторые переменные не поддались деобфускации.
    Вопрос, а что можно сделать с большинством объявленных переменных типа: $_1513854713?

  5. Димон

    Алексей, а немоглиб Вы мне помочь? Я не специалист но сайтик очень нужен, и вроде как все говорят что битрикс идеальное решение, лИЦЕНЗИЮ КОНЕЧНО ПОКУПАТЬ я невсостоянии. У вас ведь есть мой EMAIL .
    Бдте добры и снисходительны к тем, кому требуется ваша помощь.

  6. Vornic

    Димон, в сети болтается огромное множество халявных CMS, сдался вам этот битрих…

    Алексей Валеев, а меня вот заинтересовала ф-я для шифрование/дешифрования строк. :-)

  7. Death665[S.K.A.T.]

    Хех, воспользовался 4-м способом — сайт заработал сразу после закомменчивания первой проверки в include.php . Остальные проверки в итоге закомментил тоже, на всякий случай) Сейчас насилуюсь с 5-м способом, просто так, чтобы было на будущее))

    «Более того, удалось написать скрипт, который создает зашифрованные строки для произвольной даты. Например, для 31.12.2010»
    Спасибо большое, конечно) Но тут такой вопрос — можно ли где-нибудь этот скрипт найти?))

    По поводу 6-го способа — самый простой по-видимому))))))) Нужно было сразу до конца читать)))
    Спасибо большое, за эту замечательную заметку!

  8. Алексей Валеев

    Death665[S.K.A.T.], упоминание о скрипте только для того, чтобы показать техническую возможность расшифровки алгоритма. Сергей Рыжиков меня проклянет если я его выложу:)

  9. Death665[S.K.A.T.]

    Понял =) Вопрос тогда такой. Каким образом вы искали алгоритм расшифровки? Мне бы на пальцах — какими программами пользовались? Допустим я смогу установить раз 50 Битрикс на разные даты на своем виртуальном веб-сервере, и сопоставить датам зашифрованные строки. Есть ли программа, которая зависимости пытается установить? или искали в процессах установщика момент создания /bitrix/modules/main/admin/define.php и откуда берется это значение в коде установщика(хотя мои текущие знания не позволяют мне реализовать такое)? Или возможно каким-то образом сымитировать кусок кода установщика, генерирующий дефайнПХП и делающий запись в мускул?
    Извиняюсь за мою безграмотность в этом вопросе. Но знания не берутся из ниоткуда и очень хочется разобраться.

  10. Death665[S.K.A.T.]

    И еще. При 4-м способе — отключаются проверки на полное отключение сайта. Но вот такой вопрос — при этом если не подставлять фэйковые даты окончания демо, и воспользоваться только закомментированием кусков кода с проверкой, то все равно на сайте сверху будет висеть строка о 2-х недельном сроке до отключения сайта. Не могли бы помочь ее найти?)) или подсказать, как ее искать. ведь по сути, если ее еще спрятать, то сайту даже не потребуется время от времени зашифрованную дату подставлять, ведь так? или я в чем-то ошибаюсь?

  11. Death665[S.K.A.T.]

    И еще появился вопрос. Насколько палевно демо-срок больше 30-ти дней?) И какие последствия могут быть у данного сомнительного предприятия (продления демо-срока)? Просто слишком все как-то просто оказалось… подозрительно)

  12. Алексей Валеев

    Death665[S.K.A.T.], алгоритм я искал так — смотрел как дешифруется контрольная строка в include.php и потом с помощью обратных преобразований делал ее для произвольной даты. Это не так просто, убил несколько часов времени.
    Отключением строки о двухнедельном сроке не заморачивался, но думаю что это не очень сложно, скорее всего даже, что она выводится из незашифрованных файлов.
    Насчет палева — нет техподдержки, обновлений, если узнают разработчики — заставят купить или выключить сайт. Судя по комментариям на оф.сайте защитой своих прав они занимаются серьезно

  13. Death665[S.K.A.T.]

    Алексей, насчет дешифрации понял, покопаюсь на днях, скорее всего возникнут проблемы с определением куска кода, в котором проводится дешифрация)
    Строка о двухнедельном сроке очень гадит сайту, предрекая его скорую кончину посетителям, однако убирается тупо подставлением новых дат в конец триального срока.
    Заставят купить или выключить через суд, как я понимаю?) Насчет защиты их прав на торрент-треккерах наслышан)

  14. Diden05

    Странно начинать знакомство с Битриксом с попытки его спи$%^ть, редакция старт стоит около 5к рублей, нужно что то большее, просто доплачиваем. Для обучения вполне достаточно демо версий. А не хочешь платить есть куча всяких бесплатных движков.

  15. Diden05

    Да и еще, Рыжиков мне не приплачивает ;)

  16. Кирилл

    Статья хорошая и интерсная, но я нашел способ продления проше, так получилось что зарабатывал сайт для клиента и не подгодал со сроками , и в один момент у меня закончилась лицензия. что я сделал
    1) закотал битркс с 0
    2) перенес все php код который был изменел
    3) из БД выдрял таблицы которые отвечают за инфоблоки iblok….
    и вояла за 15 мин нове DEMO Ж)

    PS Люди не нульте движок лучше купить! поверьте это лучше!

  17. Саша

    А если взять 6й способ. допустим я установил время назад т.е. у меня на компе все работает. как сделать чтобы демо была дальше и на хостинге? ответь плз

  18. Chabu

    В файле include.php нужно убрать последний while и третий по счету for. В обоих условиях по одной операции.
    P.S. Не забудьте сделать backup ))))

  19. taur

    Всем привет! Народ, подскажите как скрыть надпись о том, что срок работы пробной версии продукта истек?

  20. stepdec

    Алексей Валеев

    где эта статья? ))

  21. Евгений

    В УК статья :)

  22. sharpmaster

    Автор как будто и не подозревает что есть такая штука — отладчик.

  23. sharpmaster

    Извиняюсь если слишком резко выразился.

  24. Алексей Валеев

    sharpmaster, любая критика на пользу. Насчет отладчика и правда не думал когда ковырял битрикс. К тому же было интересно самому дойти до решения по шагам.

  25. Никита

    Добрый день! А «Принцип проверки демонстрационного периода.» относится к способу №5 или это отдельный способ

  26. Никита

    Знак вопроса пропустил)

  27. Димыч

    комментирование в файле /bitrix/modules/main/include/prolog_after.php ифа if(defined(«DEMO») && DEMO==»Y») убирает надпись вверху сайта о двух неделях

  28. John

    не могу понять по поводу способа 4
    цитирую:
    «…но код php в нем явно просматривается (по символам ; { } и командам die, while и т.д.). После каждой (или нескольких) из команд пробуем вставлять строку
    1.die(«works»);»

    а нельзя ли по точнее… после какой команды и что именно вставлять. Буду весьма благодарен.

  29. Alex

    поддерживаю John
    подробнее плз))

  30. Макс

    А чем вообще отличается версия demo от полнофункциональной? только сроком пользования в первом случае?

  31. Кирилл

    Макс:, фунциональнго отличая между демо и полной нету, дето рабоать 30 дней а полная всегда и все различия

  32. Alt

    Спасибо за совет!
    Ничего ломать не собирался, просто хотел продлить тестовый период, что бы ввести лицензию…
    Воспользовался 5 вариантом, вот только значение admin_passwordh в обоих вариантах (1 — старый сайт, 2 — свежеустановленный) оказалось одинаковым, на сколько я понял это закодированный пароль админа…
    Хватило залить файл define.php

  33. Lyoha

    Для битрикс 10: (до 01.01.2038)

    admin_passwordh:
    FVgQeWYUBgQtCUVcDxcGCgsTAQ==

    define.php:
    TEMPORARY_CACHE=ARtudgYHb2MMdQgebRtmG24A

  34. Lyoha

    Alt, admin_passwordh не имеет никакого отношения к паролю админа, это зашифрованная дата отключения демки, если обратишь внимание, admin_passwordh появляется на ранних этапах установки, ещо до ввода пароля админа.
    define.php — таже дата, но зашифрованная другим способом, при проверке значения из обоих мест сверяются, по крайней мере в 10-ке.

  35. Dmitriy

    Может знает кто, как разработчики могут найти зануленый или продленный Демо до 2038-го года Bitrix?

  36. Виктор

    to Dmitriy: да нужен ты им больно.
    коммерчески успешный проект ты всё равно не сделаешь, а гавносайт на битриксе делать неудобно.

  37. Алексий

    Люди помогите!!! после нескольких установок и удалений «управление сайтом 10» не могу установить демку.

    «Внимание! На данном шаге произошла ошибка установки продукта.
    Текст ошибки:
    Срок работы пробной версии продукта истек. Вы можете купить полнофункциональную версию продукта на сайте http://www.1c-bitrix.ru. Регистрация.
    Повторите установку текущего шага. В случае повторения ошибки пропустите шаг.»

    Подскажите что делать???

  38. костя

    «if(0)» перед каким-то for и каким-то while, их там по пальцам пересчитать, пробуйте :)

  39. Diden05

    Поковыряв немного систему защиты Битрикса, было выявлено что срок действия DEMO зависит от значения в файле define.php, а не от значения поля в БД.

  40. Diden05

    Аргументирую свой пост, на одном и том же компе в разное время ставил несколько демок битрикса (все одной ревизии) значение в БД во всех случаях было одинаковым. Значения в файле define.php разными.

  41. Alt

    Я выше писал тоже самое! У меня в БД одно и тоже…

  42. Death665[S.K.A.T.]

    Алексей, а не подскажете, каким образом вручную запихнуть обновления от скачанного дистрибутива на сервер (автоматическое обновление кончилось)

  43. Алексей Валеев Автор записи

    Думаю что никак или очень-очень сложно. Разработчики постоянно что-то шаманят в файлах и структуре базы

  44. Talisman

    Проблема с сайтом 1с битрикс, не видно главной страницы, пустая. Что можно сделать? Тех.подерж молчит.

  45. anadikt

    установил на локальный компьютер но сайт пишет что типа на реконструкции! помогите разобраться с этим! плизз!

  46. NetSpike

    Вышла 11 версия, кто-нибудь пробовал на ней шаманить?

  47. Игорь

    Пока ни один способ в 11 не помог. Ищем.

  48. trasser

    Попробовал изменить значение в define.php на TEMPORARY_CACHE=ARtudgYHb2MMdQgebRtmG24A которое до 01.01.2038
    в папке /bitrix/managed_cache/ ни чего не было, кроме папки MySQL, перезапустил сервер…..сругалась на окончание пробного периода……наверно в базе нужно тоже все таки изменения вносить ?

  49. Слава

    заменил
    $GLOBALS[___19053454359623(105)]= OLDSITEEXPIREDATE; на
    $GLOBALS[___1908579623(105)]= time()+86400*365;
    в include.php
    и все прошло:)

  50. Булат

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

  51. trasser

    По 11 версии не слышно ни чего про проlление триала ?

  52. djo

    все то же самое, что и для предыдущих. сегодня только демо на месяц продлил заменой define.php и admin_passwordh

  53. samat

    в 11 версии заменил в include.php
    $GLOBALS[___112403066(420)]= OLDSITEEXPIREDATE;
    $GLOBALS[___112403066(420)]= time()+86400*965;
    на сайте появилась надпись «До истечения пробного периода осталось 965 дней»

  54. progr

    доброго времени суток! спасибо за информацию…скажите пожалуйста, что бы продлить период обновлений на сайте необходимо приобрести лицензионный ключ или есть какое-то другое решение как с продлением демо?

  55. progr

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

  56. progr

    назрел еще один вопрос)) продлен срок демо, а что будет если не обновлять сайт, будет ли он функционировать дальше?

  57. Алексей Валеев

    To progr:
    1. для обновления обязательно нужен лиц. ключ
    2. сам не пробовал, я думаю возможно, но сложно
    3. сайт будет работать до окончания действия демо

  58. oreshek

    все говорят лучше купить, и я за покупку. Но только почему то битрикс корп портал «Бизнесс процессы» , в котором есть CRM, которую мы как мелкий бизнес используем на всю катушку, стоит 99 500 руб — это для нас большие деньги.

    По идее тогда надо искать другое решение, но поверьте, мы уже сменили 3 CRM и 2 SAAS решения, пока лучше чем в битре решения найдено не было.

    Короче, я к тому что если бы это стоило хотя бы тысяч 20-25 это одно. А когда 99500 это совсем другая история. :( Нижние решения в линейке, не имеют необходимого функционала.

    Хочется и обновлений и техподдержки, но очень дорого, очень!

  59. Алексей Валеев Автор записи

    oreshek, такова политика битрикса и с этим вряд ли что-либо можно сделать.

  60. Василий

    oreshek, специально для вас Битрикс выпустил продукт bitrix24.ru которая в первой редакции вообще бесплатная и с crm

  61. Сергей

    а где расположен include.php этот? не могу разобраться…

  62. Dimas

    Напомните про смену значения в БД и в файле, а то статью прикрыли.

  63. Иван

    samat:
    16.02.2012 в 11:32

    в 11 версии заменил в include.php
    $GLOBALS[___112403066(420)]= OLDSITEEXPIREDATE;
    $GLOBALS[___112403066(420)]= time()+86400*965;
    на сайте появилась надпись «До истечения пробного периода осталось 965 дней»

    Сайт все равно упал после двух недель.

  64. Людмила

    Люди помогите где взять копию статьи???

  65. ZENKOT

    1) в файле /bitrix/modules/main/admin/define.php
    2) в базе данных в таблице b_option в записи где поле name = «admin_passwordh» в поле value

    Чтобы обойти ограничение в 30 дней достаточно установить другую демо-версию битрикса и скопировать эти значения оттуда в битрикс у которого вы хотите продлить срок.
    Не забудьте всё удалить из папки /bitrix/managed_cache/

    (с)Записи программиста v0.1

  66. Ilya Evseev

    Какой смысл убирать статью из открытого доступа, если она сохранилась на web.archive.org?

  67. gendalf

    Потому что:

    function forArr3($pockets) {
    return ‘»‘.addcslashes(func1($pockets[1]), «..\37\»\'»).'»‘;
    }

    $fileTxt = file_get_contents(«include.php»);

    $newstr = preg_replace_callback(«#\\\$array1\[(\d+)\]#s», «forArr1», $fileTxt);
    $newstr2 = preg_replace_callback(«#\\\$array2\[(\d+)\]#s», «forArr2», $newstr);
    $newstr3 = preg_replace_callback(«#func1.(\d+).#s», «forArr3», $newstr2);
    И теперь недостаточно сделать DEMO=N.

  68. Vlad

    Как в 14.5 версии сделать вечный триал,есть идеи?

  69. Виктор

    Анализ защиты кода Битрикс или «как сделать DEMO бесконечной» Способы #1-3 – тривиальные Если сайт находится на локальном компьютере, то проблемы не существует как таковой – переводим время назад и продолжаем работу с сайтом.

  70. IbnXotab

    Если дэмо версия уже кончилась, то это ко мне. Все функции доступны. Разумеется нельзя обновлять сайт. id392628075@mail.ru

Добавить комментарий

Ваш адрес email не будет опубликован.