Мануал по созданию нулла OkayCMS 3 + OkayCMS Pro 3.8.1 Nulled

mtsid

Постоялец
Регистрация
3 Май 2020
Сообщения
35
Реакции
22
Часть 1. Чистка установщика.

Удалить из файла install/models/ModelStep_2.php код:

Код:
$conf .= "license = ".$this->get_license()."\r\n \r\n";
также удалить функцию get_license.

Также из файла install/source/ok_clean.sql можно сразу удалить настройку стучалки:
Код:
(156,   'gather_enabled',   '1'),
и базу техподдержки:
Код:
DROP TABLE IF EXISTS `ok_support_info`;
CREATE TABLE `ok_support_info` (
  `id` tinyint(1) NOT NULL AUTO_INCREMENT,
  `temp_key` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `temp_time` timestamp NULL DEFAULT NULL,
  `new_messages` int(11) NOT NULL DEFAULT 0,
  `balance` int(11) NOT NULL DEFAULT 0,
  `private_key` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `public_key` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `okay_public_key` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `is_auto` tinyint(1) NOT NULL DEFAULT 1,
  `accesses` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `ok_support_info` (`id`, `temp_key`, `temp_time`, `new_messages`, `balance`, `private_key`, `public_key`, `okay_public_key`, `is_auto`, `accesses`) VALUES
(1,   '45a342413c12d8efbf137575a39d42bd',   '2020-06-03 14:13:49',   0,   0,   NULL,   NULL,   NULL,   0,   '');

Из файла design/html/step_1.php можно удалить следующий код:

проверяет согласие
Код:
onsubmit="return check()"

checkbox для этой проверки и ссылка на лицензионное соглашение
Код:
  <input id="i_agree" type="checkbox" required>
  <label for="i_agree"><?=$lang->i_agree?></label>
  <a href="https://okay-cms.com/license-okaycms" target="_blank"><?=$lang->license_link?></a>

код проверки
Код:
  <script>
    function check(){
      if(document.getElementById('i_agree').checked === false) {
        return false;
      }
    }
  </script>

Из файлов lanuage/*/step_1.php удалить пункты i_agree и license_link.

Далее можно выполнить установку.

Часть 2. Удаление проверки лицензии.

Вся проверка лицензии в OkayCMS находится в файле vendor/okaycms/license/src/OkayLicense/License.php

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

Деобфусцированный файл версии 1.3.1 (подходит для 3.8.1) можно найти здесь Для просмотра ссылки Войди или Зарегистрируйся

Удалить функции (названия из примера выше, в каждой версии обфусцированные названия меняются) :
  • name (переворачивает текст),
  • getLicenseDomains (возвращает список доменов из лицензии),
  • getLicenseExpiration (возвращает дату истечения лицензии),
  • checkModule (возвращает разрешение или запрет на использование модуля),
  • getLicenseType (возвращает тип лицензии),
  • checkForErrors (возвращает одну ошибку при проверке лицензии, если она есть),
  • checkDomains (проверяет соответствие лицензии домену),
  • error (выводит ошибку, блокирует работу скрипта),
  • validate (проверяет лицензионный ключ),
  • setResponseType (устанавливает код ответа, который проверяется в функции __destruct),
  • __destruct (выводит сообщение о том, что лицензия недействительна)
  • checkExpiration (проверяет срок действия лицензии).

Удалить код:

LicenseAdmin, конфиг для получения лицензии
Код:
use Okay\Admin\Controllers\LicenseAdmin;
use Okay\Core\Config;

получение запроса, изменение ответа
Код:
use Okay\Core\Request;
use Okay\Core\Response;

для получения ключа из конфига
Код:
  private static $config;

тип лицензии
Код:
  private static $validLicense = false;
  private static $licenseType;

запрос/ответ
Код:
  private static $response;
  private static $request;

тип ответа, для блокировки в случае ошибки с лицензией
Код:
  private $responseType;

белый список модулей
Код:
  private static $freeModules = array(
     'LigPay',
     'Rozetka'
   );

В функции getHtml удалить:

выход, если модуль не в белом списке
Код:
    if ($design->isUseModuleDir() && !self::checkModule(self::getVendor($design->getModuleTemplatesDir()) , self::getName($design->getModuleTemplatesDir())))
     {
       return '';
     }

вывод ошибки лицензии и перенаправление на страницу для изменения ключа
Код:
    if (self::$validLicense === false && $template == 'index.tpl' && strpos($design->getDefaultTemplatesDir() , 'backend/design/html') !== false)
     {
       $h = self::$request::getDomainWithProtocol();
       $rootUrl = self::$request::getRootUrl();
       if (!in_array(self::$request->get('controller') , array(
         'LicenseAdmin',
         'AuthAdmin'
       )))
       {
         $html .= strtr('<script>$(function() {alert("Current lisense is wrong for domain \"$domain\"");})</script>' , array(
           '$domain' => $rootUrl
         ));
       }
       if (!in_array(self::$request->get('controller') , array(
         '',
         'LicenseAdmin',
         'AuthAdmin'
       )))
       {
         self::$response->redirectTo("{$rootUrl}/backend/index.php?controller=LicenseAdmin");
       }
     }

В функции startModule удалить:

блокировка, если модуль не в белом списке
Код:
    if (self::checkModule($vendor, $module_name) === false)
     {
       foreach ($routes as &$route)
       {
         $route['mock'] = true;
       }
     }

проверку по белому списку модулей
Код:
if (self::checkModule($vendor, $module_name) === true)
убрать, код в фигурных скобках оставить (сами скобки нужно удалить).

В функции check удалить:

переменную о действительности лицензии
Код:
      self::$validLicense = false;

класс конфига для получения лицензии из него
Код:
      self::$config = $SL->getService(Config::class);

запрос/ответ
Код:
      self::$response = $SL->getService(Response::class);
      self::$request = $SL->getService(Request::class);

проверка лицензии, стучалка
Код:
      $licenseText = $this->validate(self::$config->license);
       if (self::checkForErrors() && $this->checkExpiration())
       {
         $this->checkDomains($licenseText->nl['domains']);
       }
       self::$response->addHeader('X-Powered-CMS: OkayCMS' . ' ' . self::$config->version . ' ' . $licenseText->nl['version_type']);

Код, возвращающий состояние лицензии
Код:
return self::$validLicense;
заменить на
Код:
return true;
Для того, чтобы скрипт начал работать, в файле Okay/Core/Database.php необходимо убрать код (встречается два раза) :

переворачивание текста
Код:
      if (isset($row->name)) {
         preg_match_all('/./us', $row->name, $ar);$row->name =  implode(array_reverse($ar[0]));
         $this->license->name($row->name);
       }

в файле Okay/Core/Response.php нужно убрать код (также встречается два раза) :

проверка кода ответа
Код:
    $this->license->setResponseType($this->type);
После этих изменений скрипт начинает работать, однако некоторые функции всё ещё необходимо удалить.

Из этих двух файлов можно вообще убрать license, также нужно сделать это в файле Okay/Core/config/services.php для Database и Response

Часть 3. Удаление ненужных функций.


Необходимо избавиться от функций лицензии и техподдержки.

Удалить файлы:
  • backend/Controllers/LicenseAdmin.php,
  • backend/Controllers/SupportAdmin.php,
  • backend/Controllers/TopicAdmin.php,
  • Okay/Core/Support.php,
  • Okay/Entities/SupportInfoEntity.php,
  • Okay/Controllers/SupportController.php,
  • backend/design/html/support.tpl,
  • backend/design/html/topic.tpl,
  • backend/design/html/license.tpl

Удалить из файла backend/Controllers/IndexAdmin.php код:

Код:
use Okay\Core\Support;

Код:
use Okay\Entities\SupportInfoEntity;

Код:
  /**
    * @var SupportInfoEntity
    */
   protected $supportInfoEntity;

   /**
    * @var Support
    */
   protected $support;

Код:
     Support $support,
     SupportInfoEntity $supportInfoEntity,

Код:
     $this->support    = $support;
     $this->supportInfoEntity = $supportInfoEntity;

Код:
     $supportInfo = $supportInfoEntity->getInfo();
     $this->design->assign('support_info', $supportInfo);

Код:
     $isNotLocalServer = !in_array($_SERVER['REMOTE_ADDR'], ['127.0.0.1', '0:0:0:0:0:0:0:1']);
     if (empty($supportInfo->public_key) && !empty($supportInfo->is_auto) && $isNotLocalServer) {
       $supportInfoEntity->updateInfo(['is_auto' => 0]);
       if ($support->getNewKeys() !== false) {
         $this->response->addHeader("Refresh:0");
         $this->response->sendHeaders();
         exit();
       }
     }

Заменить код
Код:
$design->assign('is_valid_license', $license->check());
на
Код:
$license->check();
Удалить из файла Okay/Core/config/routes.php код:
Код:
  'support' => [
     'slug' => '/support.php',
     'params' => [
       'controller' => 'SupportController',
       'method' => 'checkDomain',
     ],
   ],

Удалить из файла Okay/Core/ManagerMenu.php код:
Код:
  /**
    * Массив системных контроллеров, которые в меню не выводятся, но на них отдельные разрешения
    *
    * @var array
    */
   private $systemControllers = [
     'left_support' => ['SupportAdmin', 'TopicAdmin'],
     'left_license_title' => ['LicenseAdmin'],
   ];

Удалить из файла Okay/Core/Managers.php код:
Код:
'license',

Код:
'support',

Код:
'LicenseAdmin'  => 'license',

Код:
'SupportAdmin'  => 'support',
'TopicAdmin'  => 'support',
Удалить из файла Okay/Core/config/services.php код:
Код:
Support::class => [
  'class' => Support::class,
  'arguments' => [
    new SR(Config::class),
    new SR(Settings::class),
    new SR(EntityFactory::class),
  ],
],
Удалить из файла backend/design/html/index.tpl код:
Код:
        {*Техподдержка*}
         <div class="admin_techsupport">
           <div class="techsupport_inner">
             <a {if $support_info->public_key} data-hint="{$support_info->balance|balance}"{else} data-hint="Not active" {/if}  class="hint-bottom-middle-t-info-s-small-mobile  hint-anim"  href="index.php?controller=SupportAdmin">
               <span class="quickview_hidden">{$btr->index_support|escape}</span>
               {include file='svg_icon.tpl' svgId='techsupport'}
               {if $support_info->public_key}
               <span class="counter">{$support_info->new_messages}</span>
               {/if}
             </a>
             <div class="techsupport_toggle hidden-md-up">
               {if $support_info->public_key}
               <span>{$support_info->balance|balance}</span>
               {else}
               <span>Not active</span>
               {/if}
             </div>
           </div>
         </div>

Код:
            <div class="float-md-right">
               {if $is_valid_license}
               <a href='index.php?controller=LicenseAdmin' class="text_success">{$btr->index_valid|escape} </a>
               {else}
               <a href='index.php?controller=LicenseAdmin' class="text_warning">{$btr->index_not_valid|escape}</a>
               {/if},
               {if $support_info->public_key}
               <a class="text_success" href="index.php?controller=SupportAdmin">{$btr->index_support_active|escape} ({$support_info->new_messages})</a>
               {else}
               <a href="index.php?controller=SupportAdmin">
                 <span class="text_warning">{$btr->index_support_not_active|escape}</span>
               </a>
               {/if}
             </div>

Удалить из файлов языков backend/lang/ все строки, в которых встречается "license" или "support", а также index_valid и index_not_valid.

Удалить из файлов backend/design/css/media.css и backend/design/css/okay.css весь код, в котором встречается "support" или "techsupport". Иногда встречается в списке с другими названиями, нужно удалить только лишний пункт.

Удалить из файлов config/config.php и config/config.local.php (если он есть) лицензионный ключ.

Удаление стучалки Google Tag Manager.

Из файла backend/Helpers/BackendSettingsHelper.php удалить код:
Код:
    $this->settings->set('gather_enabled', $this->request->post('gather_enabled', 'boolean'));

Из файла backend/design/html/index.tpl удалить код:
Код:
  <!-- Google Tag Manager -->
   {if $settings->gather_enabled}
     {literal}
     <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
       new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
           j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
           'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
           })(window,document,'script','dataLayer','GTM-P6T2LJP');
     </script>
     {/literal}
   {/if}
   <!-- End Google Tag Manager -->

Код:
  <!-- Google Tag Manager (noscript) -->
   {if $settings->gather_enabled}
     <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P6T2LJP" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
   {/if}
   <!-- End Google Tag Manager (noscript) -->

В файле backend/design/html/settings_general.tpl перенести код
Код:
        <div class="row">
           <div class="col-lg-12 col-md-12 ">
             <button type="submit" class="btn btn_small btn_blue float-md-right">
               {include file='svg_icon.tpl' svgId='checked'}
               <span>{$btr->general_apply|escape}</span>
             </button>
           </div>

на строку после кода
Код:
        {get_design_block block="settings_general_recaptcha"}

Далее удалить код
Код:
  <div class="row">
     <div class="col-lg-12 col-md-12">
       <div class="boxed fn_toggle_wrap min_height_210px">
         <div class="heading_box">
           {$btr->settings_general_gathering_data}
           <div class="toggle_arrow_wrap fn_toggle_card text-primary">
             <a class="btn-minimize" href="javascript:;" ><i class="fa fn_icon_arrow fa-angle-down"></i></a>
           </div>
         </div>
         <div class="toggle_body_wrap on fn_card">
           <div class="permission_block">
             <div class="permission_boxes row">
               <div class="col-xl-12 col-lg-12 col-md-12">
                 <div class="permission_box ">
                   <span title="{$btr->settings_general_gather_enabled}">{$btr->settings_general_gather_enabled}</span>
                   <label class="switch switch-default">
                     <input class="switch-input" name="gather_enabled" value='1' type="checkbox" {if $settings->gather_enabled}checked=""{/if}/>
                     <span class="switch-label"></span>
                     <span class="switch-handle"></span>
                   </label>
                 </div>
               </div>
             </div>
           </div>
           <div class="col-xs-12 clearfix"></div>
         </div>
       </div>
     </div>
   </div>

OkayCMS Pro 3.8.1 Nulled, нуллилась по мануалу.

Удалены стучалки (в установщике и в админке) и функция техподдержки, но рекомендуется после установки заменить слова "Okay" и "okay" (с учётом регистра) на любые другие.
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Спасибо. Но не будет такого что через месяц-два они позвонят с претензией, либо хост заблокируют?
 
Спасибо. Но не будет такого что через месяц-два они позвонят с претензией, либо хост заблокируют?
Самих стучалок быть не должно (если я что-то не пропустил), но сайт, если он будет известным, всё равно могут вычислить, например, по стандартному шаблону, если он не менялся. Если этом шаблоне есть что-то уникальное.

Интересно, к чему потом приведут такие "претензии", если дело дойдёт до суда и выяснится, что у сайта была лицензия на Simpla CMS.

А вообще для любых сайтах с нелицензионными скриптами лучше искать абузоустойчивый хостинг.
 
Подскажите, а зачем нулить бесплатный движок? Может я чего то не знаю?
 
Он взломанный сейчас, разработчики пакость натворили или шелл воткнули в него... При заходе в админку /admin перебрасывает на телеграмм канал о войне. Ребята поделитесь версией 4.1.1 у кого рабочая есть.
 
Он взломанный сейчас, разработчики пакость натворили или шелл воткнули в него... При заходе в админку /admin перебрасывает на телеграмм канал о войне. Ребята поделитесь версией 4.1.1 у кого рабочая есть.
нафига тебе 4.1.1 если на официальном сайте свободно лежит 4.3?
Если и дальше будет редиректить, то поправь как расписано тут.
 
Назад
Сверху