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

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

Itnull

Команда форума
Администратор
Регистрация
май 22, 2013
Сообщения
22,681
Reaction score
5,582
Website
itnull.сс
  • Автор темы
  • Администратор
  • Модератор
  • Команда форума
  • #1
Удалось отвязать все модули от дэмки ниже скрипт работает так:
Сканирует папку модулей на наличие демок, после для каждого из них вычисляет и устанавливает новые контрольные строки.
Первая контрольная строка идет в файл, вторая в БД
Даже если модуль не сможет установить контрольные строки сам (такое тоже может быть, слишком много условий) их вполне можно установить ручками просто скопировав и вставив в БД/файл контрольные строки.
Скрипт положить в любое место и запускать.
Обновление скрипта от 17.06.2015г. - переписана функция поиска в массиве, теперь меньше ошибок при поиске ключа для кодировки строки с датой.
Обновление скрипта от 9.10.2015 - исключен модуль abtest
Скрытый контент. Для просмотра информации необходимо провести 360 дней на форуме. Или повысить права платно.
Ищем файл 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 - не обфуксирован, отправляет данные о сайте (домен, количество сайтов, пользователей и т.п.) при проверке обновлений установленных решений из маркетплейса.

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) запускаем скрипт http://my-site.com/decode/decode.php, получаем декодированный include-decode.php, к сожалению сейчас декодирует не качественно (переносы строк, кавычки и некоторые симолы при декодировании) и если подменить оринальный файл то повалятся ошибки, но код уже можно анализировать.

7) форматируем код php:
http://phpbeautifier.com/beautify.php

П.С.

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

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


Спасибо @zhmober
 

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
находим переменную которая встречается 2 раза - выглядит как-то так $_1234857676 = round(0+7+7); и еще в одном месте if(!$_1425074507){ $_1234857676= round(0+7+7);
Значение скобках "round(....)" может быть разным, но по сумме одинаковым. Что-то типа : $_1234857676 = round(0+7+7+7); и $_1234857676 = round(0+4.2+4.2+4.2+4.2+4.2);
 
  • Like
Reactions: luk

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
Ещё что заметил, у некоторых модулей лучше не загибать демо период.. Допустим у одного получилось продлить демо до 2027 года, а второй с этими же значениями просто отказался работать, хотя срок проставился.
 

Fedorsee

Житель
Регистрация
июл 16, 2019
Сообщения
1
Reaction score
2
Значение скобках "round(....)" может быть разным, но по сумме одинаковым. Что-то типа : $_1234857676 = round(0+7+7+7); и $_1234857676 = round(0+4.2+4.2+4.2+4.2+4.2);
Нашел такие переменные, поменял и ничего не изменилось
 

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
Нашел такие переменные, поменял и ничего не изменилось
Вариантов может быть несколько, либо не попал в нужные переменные, либо сначала установил, а потом начал менять
 

sten30

Житель
Регистрация
июл 15, 2016
Сообщения
118
Reaction score
62
Website
vk.com
Вариантов может быть несколько, либо не попал в нужные переменные, либо сначала установил, а потом начал менять

В модуле kda.importexcel нет ничего такого round, как быть?
 

sten30

Житель
Регистрация
июл 15, 2016
Сообщения
118
Reaction score
62
Website
vk.com

Roma87

Житель
Регистрация
сен 14, 2016
Сообщения
35
Reaction score
10
Продлил демо по нужному приложению. Что и как делать со скриптом. Кроме манипуляций с файлом bitrix/modules/ваш_модуль/install/index.php что то еще нужно делать ?
 

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
Продлил демо по нужному приложению. Что и как делать со скриптом. Кроме манипуляций с файлом bitrix/modules/ваш_модуль/install/index.php что то еще нужно делать ?
Кидай в папку с модулями и устанавливай
 

Roma87

Житель
Регистрация
сен 14, 2016
Сообщения
35
Reaction score
10
Кидай в папку с модулями и устанавливай
Сделал, больше ничего не нужно, демо не слетит ? Как быть с решениями у которых нет такой переменной в файле index.php ? Тот же акрит решение для Экспорта на порталы.
 

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
Сделал, больше ничего не нужно, демо не слетит ? Как быть с решениями у которых нет такой переменной в файле index.php ? Тот же акрит решение для Экспорта на порталы.
Не должно слететь
 

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
Последнее редактирование:

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
По сути, по тому пути, что я написал, отключается полностью эта строчка у любого модуля. Если не прав, киньте помидором :rolleyes:
 
  • Like
Reactions: luk

Berezagrad

Житель
Регистрация
май 1, 2019
Сообщения
468
Reaction score
676
Сверху Снизу