• Гость в разделе 1С-Битрикс все ссылки на модули, шаблоны и т.д. помещаем под хайд не менее 150 лайков.
  • Обязательно ознакомьтесь с правилами форума!

Неактуально Продление жизни обфусцированного ДЕМО модуля

Статус
В этой теме нельзя размещать новые ответы.
  • Последнее редактирование:
  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #1
Последнее редактирование:
Удалось отвязать все модули от дэмки ниже скрипт работает так:
Сканирует папку модулей на наличие демок, после для каждого из них вычисляет и устанавливает новые контрольные строки.
Первая контрольная строка идет в файл, вторая в БД
Даже если модуль не сможет установить контрольные строки сам (такое тоже может быть, слишком много условий) их вполне можно установить ручками просто скопировав и вставив в БД/файл контрольные строки.
Скрипт положить в любое место и запускать.
Обновление скрипта от 17.06.2015г. - переписана функция поиска в массиве, теперь меньше ошибок при поиске ключа для кодировки строки с датой.
Обновление скрипта от 9.10.2015 - исключен модуль abtest
Ищем файл bitrix/modules/ваш_модуль/install/index.php
Открываем его. Главное не испугаться!
находим переменную которая встречается 2 раза - выглядит как-то так $_1234857676 = round(0+7+7); и еще в одном месте if(!$_1425074507){ $_1234857676= round(0+7+7);
Сумма в скобках должна совпадать с отведенным ДЕМО ПЕРИОДОМ 0+7+7 = 14

И меняем сие значение на к примеру $_1234857676 = 3000; (ВНИМАНИЕ!!!!! Оно встречается два раза в файле.)

После этого можно устанавливать модуль.
Итог действа: мы увеличиваем демо срок и не паримся, остаются обновления модуля.

З.Ы Если была не удачная попытка и срок остался темже, ну не угадали вы переменную, то начинаем сначало для этого -
Нужно снести файл user_date_bsm.php чаще всего ложится в папку bitrix/modules/ваш_модуль/admin/
и в таблице b_option

MODULE_ID: имя_модуля
NAME: ~bsm_stop_date
VALUE: BQJ1DWcFUVB6UldRVyIDJkpVUg==


1. Проверка ограничений демо версии вшита в код в нескольких файлах системы, код этот обфуксирован.
2. Проверка ограничени также выполняется каждый раз при проверке обновлений ядра/удстановленных решений из маркетплейса и при установке самих решений.
3. Также при этом выполняется отправка данных о сайте (домен, количество сайтов, установленные модули, пользователей и т.п.) и проверка на соответствие их с лицензией.

Файлы для анализа:
/bitrix/modules/main/include.php - обфуксирован, проверка ограничений демо
/bitrix/modules/main/include/prolog_after.php - обфуксирован, проверка ограничений демо
/bitrix/modules/main/tools.php - обфуксирован, проверка ограничений демо
/bitrix/modules/main/classes/general/update_client.php - обфуксирован, отправляет данные о сайте домен, количество сайтов, пользователей и т.п.) при проверке обновлений ядра, проверка ограничений демо.
/bitrix/modules/main/classes/general/update_client_partner.php - не обфуксирован, отправляет данные о сайте (домен, количество сайтов, пользователей и т.п.) при проверке обновлений установленных решений из маркетплейса.

Код:
function forArr1($pockets) {

return $GLOBALS['array1'][$pockets[1]];
}
function forArr2($pockets) {


return $GLOBALS['array2'][$pockets[1]];
}
function forArr3($pockets) {

return '"'.func1($pockets[1]).'"';
}

$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);

//уберем математические конструкции вида min(a, b, c)
preg_match_all("/min\([\d\s\,\.\+]*\)/s", $newstr3, $array_min);
foreach ($array_min[0] as $value) {
eval('$r = '.$value.';');
$newstr3 = str_replace($value, $r, $newstr3);
}

//уберем математические конструкции вида round(a + b + c)
preg_match_all("/round\([\d\s\,\.\+]*\)/s", $newstr3, $array_round);
foreach ($array_round[0] as $value) {
eval('$r = '.$value.';');
$newstr3 = str_replace($value, $r, $newstr3);
}

//уберем математические конструкции вида (a + b * c)
preg_match_all("/\([\d\s\.\+\-\/\*]*\)/s", $newstr3, $array_math);
foreach ($array_math[0] as $value) {
if ($value <> '()'){
eval('$r = '.$value.';');
$newstr3 = str_replace($value, $r, $newstr3);
}

}

//уберем символы переноса строки:
$newstr3 = str_replace(array("\r","\n"),"",$newstr3);

file_put_contents("include-decode.php", $newstr3);
4) В файле "/decode/decode.php" заменяем первую глобальную переменную $GLOBALS['_____1057733139'] на $GLOBALS['array1'], вторую на $GLOBALS['array2'], функцию вида function ___1867810104( на func1;

5) В файле "/decode/include.php" заменяем соответственно все вхождения глобальной первой переменной вида "$GLOBALS['_____1057733139']" на array1 (внимание! без знака доллара $), второй - на array2, имя функции вида "___1867810104" в func1, сохраняем;

6) запускаем скрипт my-site.com/decode/decode.php, получаем декодированный include-decode.php, к сожалению сейчас декодирует не качественно (переносы строк, кавычки и некоторые симолы при декодировании) и если подменить оринальный файл то повалятся ошибки, но код уже можно анализировать.

7) форматируем код php:

П.С.

По хорошему бы хотелось сделать или автоматический деобфуксатор или автопатчер по типу такого как в Updater сделано.

Идей много:
  1. Патчер который накладывает патчи скрывающие инфу о сайте при апдейте.
  2. Прокси, проксирующий запросы на сервер обновлений битрикса, который вносит изменений в эти запросы.
  3. Автоматический деобфуксатор.
  4. Патчер который снимает проверки на ограничения битрикса.
  5. Скрипт автоматического получения и обновления демо-ключа.
 
Последнее редактирование:

mihey19

Пользователь
Вы с нами 2 года! Спасибо. За год с нами
Регистрация
14.11.21
Сообщения
5
Симпатии
0
Этот код еще работает в 2021 году?
 
Регистрация
02.06.21
Донат
50.00 ₽
Сообщения
9,030
Решения
1
Симпатии
7,305
Веб-сайт
itnull.info
  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #3
Регистрация
02.06.21
Донат
50.00 ₽
Сообщения
9,030
Решения
1
Симпатии
7,305
Веб-сайт
itnull.info
  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #5

mihey19

Пользователь
Вы с нами 2 года! Спасибо. За год с нами
Регистрация
14.11.21
Сообщения
5
Симпатии
0
Всмысле ни каких? А это что?
Скрипт положить в любое место и запускать.

Это "$_1234857676 = round(0+7+7); и еще в одном месте if(!$_1425074507){ $_1234857676= round(0+7+7);"
не работает
 
Регистрация
02.06.21
Донат
50.00 ₽
Сообщения
9,030
Решения
1
Симпатии
7,305
Веб-сайт
itnull.info
  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #7
Всмысле ни каких? А это что?
Скрипт положить в любое место и запускать.

Это "$_1234857676 = round(0+7+7); и еще в одном месте if(!$_1425074507){ $_1234857676= round(0+7+7);"
не работает
Позже проверю скрипт у себя и выложу. Файлы забыл загрузить действительно
 

whiteguard52

Пользователь
За год с нами За классный аватар
Регистрация
08.09.22
Сообщения
2
Симпатии
0
Мне кажется в скрипте не хватает функции func1 , так как скрипт натыкается на нее и пишет, что функция не определена

PHP:
[Error]
Call to undefined function func1() (0)
/home/bitrix/ext_www/biorobot.ru/decode/decode.php:18
#0: forArr3
#1: preg_replace_callback
/home/bitrix/ext_www/biorobot.ru/decode/decode.php:25
 
Регистрация
02.06.21
Донат
50.00 ₽
Сообщения
9,030
Решения
1
Симпатии
7,305
Веб-сайт
itnull.info
  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #10
Мне кажется в скрипте не хватает функции func1 , так как скрипт натыкается на нее и пишет, что функция не определена

PHP:
[Error]
Call to undefined function func1() (0)
/home/bitrix/ext_www/biorobot.ru/decode/decode.php:18
#0: forArr3
#1: preg_replace_callback
/home/bitrix/ext_www/biorobot.ru/decode/decode.php:25
Возможно, файл старенький уже, оригинал я не нашел
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу