Четверг, 25.04.2024, 15:56
# FreeBSD ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [167]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » Мои статьи

Зануляем Bitrix

Зануляем Bitrix

22.07.2012

По долгу службы пришлось мне иметь дело с битриксом. Так как раньше с ним я никогда не работал то сразу побрёл на официальный сайт за демо-версией. Из всех редакций для скачки оказалась доступна версия "Старт". Кстати, как показала истина, распространяется сие благо с открытым исходником, что и натолкнуло меня на коварные мысли. На ознакомление разработчики дают 30 дней. Мне это показалось несправедливым, исправлением чего мы и займёмся :)

Начнём с того, что-же произойдёт по истечении триального периода. Выставляем системную дату на месяц вперёд, открываем сайт и видим вверху страницы сообщение слещующего содержания: "Срок работы пробной версии продукта истек. Через две недели этот сайт полностью прекратит свою работу... бла бла бла". Ну ok, смотрим что будет через две недели. Переводим дату на две недели вперёд и уже видим, что на сообщении "Срок работы пробной версии продукта истек... бу бу бу" работа скрипта обрывается. Непорядок. Информация должна быть доступна (c). С этого момента наше расследование причин сего инцидента и начнётся.
Делаем прыжок во времени на две недели назад, жмём в браузере ctrl+u и смотрим HTML-код сообщения. Любоваться тут особенно нечем:
<font class="tablebodytext"><font color="#FF0000">
 Срок работы пробной версии продукта истек.
 Через две недели этот сайт полностью прекратит свою работу.
 Вы можете купить полнофункциональную версию продукта на сайте <a href="http://www.1c-bitrix.ru/?r1=bsm7trial&amp;r2=expiried">www.1c-bitrix.ru</a>.
 </font></font>
Здесь первым делом мой взгляд привлёк класс tablebodytext. Как настоящие хакеры вы немедленно грепнете php-файлы содержащие этот класс, ну а мы виндузятники просто заюзаем для поиска старый добрый FAR-менеджер. Поиск даст нам ~15 файлов среди которых найдутся и языковые файлы tools.php. По искомому слову (tablebodytext) находим строку локализации $MESS["expire_mess1"] и рядом с ней expire_mess2 в которых мы и увидим сообщение об истёкшем сроке. Идём по следу дальше. Теперь нам нужно найти PHP-код который выводит это сообщение и конечно-же выпилить его. Ищем expire_mess1 во всех php-файлах и находим prolong_after.php на каких-то сто строк кода.
<?
define("START_EXEC_PROLOG_AFTER_1", microtime());
$GLOBALS["BX_STATE"] = "PA";
if(!headers_sent())
 header("Content-type: text/html; charset=".LANG_CHARSET);
if(defined("DEMO") && DEMO=="Y")
{
 if(OLDSITEEXPIREDATE != SITEEXPIREDATE) die(GetMessage("expire_mess2"));
 //wizard customization file
 $bxProductConfig = array();
 if(file_exists($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/.config.php"))
 include($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/.config.php");
 $delta = $SiteExpireDate-time();
 $daysToExpire = ($delta < 0? 0 : ceil($delta/86400));
 $bSaas = (COption::GetOptionString('main', '~SAAS_MODE', "N") == "Y");
 if(isset($bxProductConfig["saas"]))
 {
 if($bSaas)
 {
 if($daysToExpire > 0)
 {
 if($daysToExpire <= $bxProductConfig["saas"]["days_before_warning"])
 {
 $sWarn = $bxProductConfig["saas"]["public_warning"];
 $sWarn = str_replace("#RENT_DATE#", COption::GetOptionString('main', '~support_finish_date'), $sWarn);
 $sWarn = str_replace("#DAYS#", $daysToExpire, $sWarn);
 echo $sWarn;
 }
 }
 else
 {
 echo str_replace("#RENT_DATE#", COption::GetOptionString('main', '~support_finish_date'), $bxProductConfig["saas"]["public_warning_expired"]);
 }
 }
 else
 {
 if($daysToExpire == 0)
 echo $bxProductConfig["saas"]["public_trial_expired"];
 }
 }
 elseif($daysToExpire == 0)
 {
 echo GetMessage("expire_mess1");
 }
}
if(COption::GetOptionString("main", "site_stopped", "N")=="Y" && !$GLOBALS["USER"]->CanDoOperation('edit_other_settings'))
{
 if(file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/".LANG."/site_closed.php"))
 include($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/".LANG."/site_closed.php");
 elseif(file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/include/site_closed.php"))
 include($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/include/site_closed.php");
 else
 include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/site_closed.php");
 die();
}
$sPreviewFile = $_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/tmp/templates/__bx_preview/header.php";
if($_GET['bx_template_preview_mode'] == 'Y' && $USER->CanDoOperation('edit_other_settings') && file_exists($sPreviewFile))
 include_once($sPreviewFile);
else
 include_once($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".SITE_TEMPLATE_ID."/header.php");
/* Draw edit menu for whole content */
global $BX_GLOBAL_AREA_EDIT_ICON;
$BX_GLOBAL_AREA_EDIT_ICON = false;
if($GLOBALS['APPLICATION']->GetShowIncludeAreas())
{
 require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/interface/init_admin.php");
 $aUserOpt = CUserOptions::GetOption("global", "settings", array());
 if ($aUserOpt["page_edit_control_enable"] != "N")
 {
 $documentRoot = CSite::GetSiteDocRoot(SITE_ID);
 if(isset($_SERVER["REAL_FILE_PATH"]) && $_SERVER["REAL_FILE_PATH"] != "")
 $currentFilePath = $_SERVER["REAL_FILE_PATH"];
 else
 $currentFilePath = $GLOBALS['APPLICATION']->GetCurPage(true);
 $bCanEdit = true;
 if(!is_file($documentRoot.$currentFilePath) || !$GLOBALS["USER"]->CanDoFileOperation("fm_edit_existent_file", array(SITE_ID, $currentFilePath)))
 $bCanEdit = false;
 //need fm_lpa for every .php file, even with no php code inside
 if($bCanEdit && !$GLOBALS["USER"]->CanDoOperation('edit_php') && in_array(GetFileExtension($currentFilePath), GetScriptFileExt()) && !$GLOBALS["USER"]->CanDoFileOperation('fm_lpa', array(SITE_ID, $currentFilePath)))
 $bCanEdit = false;
 if($bCanEdit && IsModuleInstalled("fileman") && !($GLOBALS["USER"]->CanDoOperation("fileman_admin_files") && $GLOBALS["USER"]->CanDoOperation("fileman_edit_existent_files")))
 $bCanEdit = false;
 if($bCanEdit)
 {
 echo $GLOBALS['APPLICATION']->IncludeStringBefore();
 $BX_GLOBAL_AREA_EDIT_ICON = true;
 }
 }
}
define("START_EXEC_PROLOG_AFTER_2", microtime());
$GLOBALS["BX_STATE"] = "WA";
?>
С первого взгляда может показаться, что дело в шляпе и остаётся лишь закомментировать места вывода сообщений. А лучше просто поменять if(defined("DEMO") && DEMO=="Y") на if(defined("OLOLO") && DEMO=="Y"). Правда всёравно это не поможет :) Разработчики битрикса не такие лохи как вы себе представили. Но всёравно лохи. Но на этом и начинается самое интересное. Как быть дальше? Похоже что дело зашло в тупик. Но не очкуйте и включите мозг. Давайте ещё раз повнимательнее посмотрим на prolong_after.php и увидим в нём строчку if(OLDSITEEXPIREDATE != SITEEXPIREDATE) которая нам как-бэ намекает, что разработчики битрикса заранее позаботились о сроках годности демо-версии. Ура. Мы снова напали на след и теперь ищем SITEEXPIREDATE везде где только можно. Поиск одарит нас несколькими файлами, самым вкусным на мой беглый взгляд оказался include.php, и моя интуиция снова меня не подвела. От увиденного в этом файле меня чуть не стошнило. Код скрипта маниакально обфусцирован, но зато это значит что разработчикам есть что скрывать. А раз есть что скрывать - значит надо раскопать и наверняка собака зарыта именно в этом месте. Как проверить, что это нужный нам файл? Да очень просто. Вставляем в начало скрипта такой код , сохраняем и заходим на сайт. Видим что оно сработало. Теперь убираем этот код и дописываем его в самый конец файла. Снова заходим на сайт и видем до боли нам знакомое сообщение. Это значит, что код отвечающий за вывод сообщения находится именно в этом файле. Но вот как его найти среди всей этой бредятины? Ну, первым делом нам надо привести файл к более-менее читабельному виду. Гуглим PHP-деобфускатор и находим чудесную утилиту phpCodeBeautifier. Качаем, распаковываем и открываем командную строку. Кстати программка эта есть как в никсовом так и в виндовом виде. Теперь несём файл include.php в папочку с phpCB и выполняем команду phpcb include.php > include.norm.php
Получившийся файл я бы не сказал что Beautiful но зато более менее Readable, чего нам вполне достаточно. Этим файлом (include.norm.php) без проблем можно заменить старый обфусцированный файл include.php. Теперь методом научного тыка подставляем (ну и убираем тоже) в разные строки файла die('all right!'); и постепенно сужая диапазон строк находим строчку на которой происходит вывод ненавистного сообщения. Для тех кто в танке объясню как найти нужную строку более подробно. Подставляем например в строку 12 die('all right');, сохраняем файл и заходим на сайт. Видим all right. Далее убираем all right с 12 строки и вставляем на строку 200. Снова заходим на сайт и видим сообщение об истёкоем сроке. Потом идём на строку 70, потом на 150 и постепенно сужаем поиск до нужной строки.
По иронии судьбы, а может разработчиков битрикса номер этой строки оказался 123 :) Пытаемся разобраться что-же тут написано но в конце концов побеждает лень и принято решение просто закомментировать эту строку. Ура - сайт снова работает, правда сообщение всёравно выводится. Но ничего, теперь возвращаемся к файлу prolong_after.php и чего нибудь там меняем (или удаляем) чтобы оно не выводилось. Ну, например мняем defined("DEMO") на defined("NULLED") и на этом цель достигнута. Правда в админке всёравно вылетает сообщение о том, что осталось 0 дней, но уж это я любезно предоставлю читателю :)

Категория: Мои статьи | Добавил: Admin (22.10.2013)
Просмотров: 7381 | Комментарии: 213 | Рейтинг: 0.0/0
Всего комментариев: 6
6 Montanaqoy  
0
Доброго времени суток дамы и господа!
https://www.vogelforen.info/viewtopic.php?t=7386
http://spearboard.com/member.php?u=777547
http://tsxvresearch.com/forum/viewtopic.php?f=2&t=122066
http://24tov.com.ua/forum/viewtopic.php?f=4&t=129513
http://24tov.com.ua/forum/viewtopic.php?f=14&t=193689

Есть такой замечательный сайт для заказа услуг стоматологии в Минске.К вашим услугам лучшие стоматологи Минска с многолетним стажем.
В случаях, когда терапевтическая стоматология бессильна, приходится прибегать к хирургической. А если зубосохраняющие операции не принесут результата, прибегают к удалению зуба.Необходимость вырвать зуб возникает при:полном или сильном разрушении кариесом;наличии кисты;острых формах периодонтита;количестве зубов выше нормы;неправильном расположении в десне — актуально для зубов мудрости, нередко растущих перпендикулярно основному зубному ряду;установке брекет-системы или зубного протеза;физическом травмировании, смещении в десне, невозможности восстановительной операции.Рекомендации после удаления.После операции в десне остается открытая лунка, на которую иногда накладываются швы. Нежелательно касаться лунки языком, дав сформироваться кровяному сгустку. По той же причине рекомендуется не принимать пищу на протяжении 3-4 часов после посещения стоматолога. Необходимо некоторое время воздерживаться от горячей еды и напитков, а также алкоголя. Несоблюдение рекомендации приведет к увеличению периода заживления и болезненным ощущениям.Качественно и безопасно вырвать зуб в Минске можно платно. Цена удаления зуба в стоматологии зависит от количества корней, расположения, сложности удаления. Операция проводится квалифицированными хирургами-стоматологами.
От всей души Вам всех благ!

5 Victorjyg  
0
Приветствую Вас господа!
Мы будем рады Вас видеть у нас на сайте
https://forum.tvfool.com/member.php?u=1545694
https://www.findaspermdonor.com/viewtopic.php?f=31&t=81926
http://forum.survival-readiness.com/viewtopic.php?t=11318

Решение владельца бизнеса заказать новый сайт под ключ либо модернизировать дизайн и функционал старого, как правило, продиктовано поиском новых точек роста. Мы разрабатываем и создаем удобные и красивые веб - сайты, которые надежно работают и легко редактируются, учитывая все пожелания Заказчика и тщательно проработав нишу клиента и конкурирующие интернет-сайты. Решив заказать сайт под ключ по отличной цене в нашей веб студии, Вы получите максимально качественный уникальный ресурс за свои деньги. Все этапы создания сайта (от регистрации доменного имени до установки ресурса на хостинг) мы возьмем в свои руки. Разработаем и создадим для Вас в Минске полноценный интернет-магазин, сайт визитку, лэндинг или корпоративный сайт недорого, качественно и точно в срок.
Наша контора занимается свыше 10 лет ремонтом и обслуживанием оргтехники в городе Минске.
Всегда рады помочь Вам!С уважением,ТЕХНОСЕРВИC

4 Dantecon  
0
Открытие счета в иностранных банках

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

2. Соберите необходимые документы. Обычно для открытия счета в иностранном банке необходимо предоставить следующие документы:

Загранпаспорт
Копия внутреннего паспорта
Подтверждение адреса проживания
Справка с места работы или выписка из банка
Заполненная анкета банка

3. Подайте заявку на открытие счета. Вы можете подать заявку на открытие счета в иностранном банке лично, по почте или онлайн.

4. Дождитесь одобрения заявки. Банк рассмотрит вашу заявку и примет решение об открытии счета или отказе в открытии счета. Обычно процесс рассмотрения заявки занимает несколько дней.

5. Получите реквизиты счета. После одобрения заявки банк вышлет вам реквизиты счета, включая номер счета, SWIFT-код и IBAN.

6. Внесите деньги на счет. Вы можете внести деньги на счет в иностранном банке банковским переводом, через Western Union или другим способом.

7. Начните пользоваться счетом. После внесения денег на счет вы можете начать пользоваться им для оплаты товаров и услуг, снятия наличных и осуществления онлайн-платежей.

Советы по открытию счета в иностранных банках:

Перед подачей заявки на открытие счета сравните различные банки по комиссии, сборам, валютам и другим условиям.
Убедитесь, что вы предоставляете банку достоверную информацию.
Будьте готовы предоставить банку дополнительные документы, если это необходимо.
Ознакомьтесь с условиями использования счета перед его активацией.
Не забывайте своевременно вносить платежи по счету, чтобы избежать штрафов и комиссий.

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

https://dragonballpowerscaling.com/index.php/User:BorisBar045848 перевод денег из россии в европу с карты на карту

=bank=ww

3 Bogdanxal  
0
Здравствуйте друзья!
Более подробная информация размещена https://drive.google.com/file/d/1dvAKJyEOOME6UOwkqlaXD570mM28fJWy/view?usp=sharing
Предлагаем Вашему вниманию изделия из стекла для дома и офиса.Наша организация ООО «СТЕКЛОЭЛИТ» работает 10 лет на рынке этой продукции в Беларуси.Стеклянные двери межкомнатные в Минске с ценами и фото представлены на данной странице. Вы можете заказать и купить их с бесплатным замером и доставкой по Беларуси. Вам по нраву такой неординарный вариант как стеклянные межкомнатные двери? Наша Команда в Минске расскажет всё о секретах установки, дизайнах интерьера с примерами фото, и поможет выбрать и купить дверь вашей мечты по нормальным ценам. Плюсы и минусы дверей из стекла: Сейчас такие варианты пользуются большой популярностью. Их выбирают для установки в душе, бане, а некоторые и вовсе предпочитают видеть их в качестве межкомнатных.
Увидимся!

2 Bogdanvzn  
0
Здравствуйте дамы и господа!
Более подробная информация размещена https://drive.google.com/file/d/1dvAKJyEOOME6UOwkqlaXD570mM28fJWy/view?usp=sharing
Предлагаем Вашему вниманию изделия из стекла для дома и офиса.Наша организация ООО «СТЕКЛОЭЛИТ» работает 10 лет на рынке этой продукции в Беларуси.Стеклянные двери межкомнатные в Минске с ценами и фото представлены на данной странице. Вы можете заказать и купить их с бесплатным замером и доставкой по Беларуси. Вам по нраву такой неординарный вариант как стеклянные межкомнатные двери? Наша Команда в Минске расскажет всё о секретах установки, дизайнах интерьера с примерами фото, и поможет выбрать и купить дверь вашей мечты по нормальным ценам. Плюсы и минусы дверей из стекла: Сейчас такие варианты пользуются большой популярностью. Их выбирают для установки в душе, бане, а некоторые и вовсе предпочитают видеть их в качестве межкомнатных.
От всей души Вам всех благ!

1 Marinazqm  
0
Доброго времени суток господа!
http://community.yourhcg.com/member.php?u=1587878&s=df30c64ca904d01912be2023c20de48b
https://atsgmembers.com/memarea/forums/forums/viewtopic.php?f=62&t=2309265
http://yj.generalarminius.com/viewtopic.php?p=19455#p19455
https://carbis.ru/forum/member.php/336519-Marinafbg
https://the-cinema.online/user/Zelenawfl/

Предлагаем Вашему вниманию сервис оргтехники и продажу расходников для дома и офиса.Наша организация «КОПИМЕДИАГРУПП» работает 10 лет на рынке этой продукции в Беларуси.Заправка картриджей Минск – это скрупулезная и ответственная работа, так как от нее зависит рабочий процесс всей компании или распечатка важного документа. Малейшая ошибка или недоделка приведет к перебоям в работе заказчика, и соответственно к потере нашей репутации и прибыли. Для нас на первом месте стоит репутация, которую мы заработали нелегкими и долгими годами труда. Поэтому выполняя очередной заказ на заправку принтера или ксерокса, мы думаем о клиенте и с полной ответственностью можем гарантировать как качество, так и быстрое исполнение работы. Заявку на вызов Вы можете оставить как на сайте, так и по телефону. Так же в Online чате сбоку. Наш оператор обговорит удобное для Вас время, и наши специалисты прибудут точно в срок. Качество наших работ всегда на высшем уровне, так как у нас работает лучшая команда профессионалов!Рады предложить нашим клиентам:Заправка картриджей с выездом на дом и офис.Ремонт и восстоновление картриджей.Прошивка любого лазерного принтера.Настройка принтера (wi-fi, установка драйверов на компьютер).Замена термопленки и роликов захвата бумаги.Купить картридж к любому лазерному картриджу.Для заказа мастера просто позвоните по указанным телефонам или оставьте завку, выбрав свою модель!

Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz