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

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

Itnull

Команда форума
Администратор
Регистрация
22.05.13
Сообщения
25.491
Реакции
9.468
Веб-сайт
itnull.me
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #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
 
находим переменную которая встречается 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);
 
  • Мне нравиться
Симпатий: luk
Ещё что заметил, у некоторых модулей лучше не загибать демо период.. Допустим у одного получилось продлить демо до 2027 года, а второй с этими же значениями просто отказался работать, хотя срок проставился.
 
Значение скобках "round(....)" может быть разным, но по сумме одинаковым. Что-то типа : $_1234857676 = round(0+7+7+7); и $_1234857676 = round(0+4.2+4.2+4.2+4.2+4.2);
Нашел такие переменные, поменял и ничего не изменилось
 
Нашел такие переменные, поменял и ничего не изменилось
Вариантов может быть несколько, либо не попал в нужные переменные, либо сначала установил, а потом начал менять
 
Вариантов может быть несколько, либо не попал в нужные переменные, либо сначала установил, а потом начал менять

В модуле kda.importexcel нет ничего такого round, как быть?
 
Продлил демо по нужному приложению. Что и как делать со скриптом. Кроме манипуляций с файлом bitrix/modules/ваш_модуль/install/index.php что то еще нужно делать ?
 
Продлил демо по нужному приложению. Что и как делать со скриптом. Кроме манипуляций с файлом bitrix/modules/ваш_модуль/install/index.php что то еще нужно делать ?
Кидай в папку с модулями и устанавливай
 
Кидай в папку с модулями и устанавливай
Сделал, больше ничего не нужно, демо не слетит ? Как быть с решениями у которых нет такой переменной в файле index.php ? Тот же акрит решение для Экспорта на порталы.
 
Сделал, больше ничего не нужно, демо не слетит ? Как быть с решениями у которых нет такой переменной в файле index.php ? Тот же акрит решение для Экспорта на порталы.
Не должно слететь
 
Последнее редактирование:
По сути, по тому пути, что я написал, отключается полностью эта строчка у любого модуля. Если не прав, киньте помидором :rolleyes:
 
  • Мне нравиться
Симпатий: luk
Назад
Сверху Снизу