Мануал по созданию нулла OKay CMS и Simpla CMS

Тема в разделе "Simplacms", создана пользователем Mapkyc, 25 мар 2016.

Модераторы: yaski
  1. Mapkyc

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    105
    Симпатии:
    47
    Итак вообщем мануал по нуллению актуальных версии Okay CMS - для Simpla CMS принцип тот же (есть небольшие различия в админке)

    Устанавливаем Okay CMS получаем тестовый ключ и чистим
    Либо распаковываем архив из дистрибутива, делаем необходимые манипуляции и пакуем все назад с тем же именем.

    index.php - удаляем нафиг следующий код, для отключения проверки лицензии во фронтенде
    PHP:
    $p=13$g=3$x=5$r ''$s $x;
    $bs explode(' '$view->config->license); 
    foreach(
    $bs as $bl){
        for(
    $i=0$m=''$i<strlen($bl)&&isset($bl[$i+1]); $i+=2){
            
    $a base_convert($bl[$i], 3610)-($i/2+$s)%27;
            
    $b base_convert($bl[$i+1], 3610)-($i/2+$s)%24;
            
    $m .= ($b * (pow($a,$p-$x-5) )) % $p;}
        
    $m base_convert($m1016); $s+=$x;
        for (
    $a=0$a<strlen($m); $a+=2$r .= @chr(hexdec($m{$a}.$m{($a+1)}));}

    @list(
    $l->domains$l->expiration$l->comment) = explode('#'$r3);

    $l->domains explode(','$l->domains);

    $h getenv("HTTP_HOST");
    if(
    substr($h04) == 'www.') {
        
    $h substr($h4);
    }
    if((!
    in_array($h$l->domains) || (strtotime($l->expiration)<time() && $l->expiration!='*'))) {
        print 
    "<div style='text-align:center; font-size:22px; height:100px;'>Лицензия недействительна<br><a href='http://okay-cms.com'>Скрипт интернет-магазина Okay</a></div>";
    }
    backend/IndexAdmin.php удаляем код для отключения проверки в бекенде
    PHP:
    // удаляем из массивов в 2ух местах
    'LicenseAdmin' => 'license'

    // удаляем целиком конструкцию
            
    if ($module != 'AuthAdmin') {
                
    $p=13$g=3$x=5$r ''$s $x;
                
    $bs explode(' '$this->config->license);
                foreach(
    $bs as $bl){
                    for(
    $i=0$m=''$i<strlen($bl)&&isset($bl[$i+1]); $i+=2){
                        
    $a base_convert($bl[$i], 3610)-($i/2+$s)%27;
                        
    $b base_convert($bl[$i+1], 3610)-($i/2+$s)%24;
                        
    $m .= ($b * (pow($a,$p-$x-5) )) % $p;}
                    
    $m base_convert($m1016); $s+=$x;
                    for (
    $a=0$a<strlen($m); $a+=2$r .= @chr(hexdec($m{$a}.$m{($a+1)}));}

                @list(
    $l->domains$l->expiration$l->comment) = explode('#'$r3);

                
    $l->domains explode(','$l->domains);
                
    $h getenv("HTTP_HOST");
                if(
    substr($h04) == 'www.'$h substr($h4);
                if((!
    in_array($h$l->domains) || (strtotime($l->expiration)<time() && $l->expiration!='*')) && $module!='LicenseAdmin') {
                    
    header('location: '.$this->config->root_url.'/backend/index.php?module=LicenseAdmin');
                } else {
                    
    $l->valid true;
                    
    $this->design->assign('license'$l);
                }

                
    $this->design->assign('license'$l);
            }
    backend/ProductsAdmin.php в модуле управления товарами
    PHP:
    // удаляем вызов бесполезной функции

    $this->smarty_func();

    // так же удаляем всю функцию
        
    private function smarty_func(){
            if (
    file_exists('backend/LicenseAdmin.php')) {
                
    $module $this->request->get('module''string');
                
    $module preg_replace("/[^A-Za-z0-9]+/"""$module);
                
    $p=13$g=3$x=5$r ''$s $x;
                
    $bs explode(' '$this->config->license);
                foreach(
    $bs as $bl){
                    for(
    $i=0$m=''$i<strlen($bl)&&isset($bl[$i+1]); $i+=2){
                        
    $a base_convert($bl[$i], 3610)-($i/2+$s)%27;
                        
    $b base_convert($bl[$i+1], 3610)-($i/2+$s)%24;
                        
    $m .= ($b * (pow($a,$p-$x-5) )) % $p;}
                    
    $m base_convert($m1016); $s+=$x;
                    for (
    $a=0$a<strlen($m); $a+=2$r .= @chr(hexdec($m{$a}.$m{($a+1)}));}

                @list(
    $l->domains$l->expiration$l->comment) = explode('#'$r3);

                
    $l->domains explode(','$l->domains);
                
    $h getenv("HTTP_HOST");
                if(
    substr($h04) == 'www.'$h substr($h4);
                if((!
    in_array($h$l->domains) || (strtotime($l->expiration)<time() && $l->expiration!='*')) && $module!='LicenseAdmin') {
                    
    header('location: '.$this->config->root_url.'/backend/index.php?module=LicenseAdmin');
                } else {
                    
    $l->valid true;
                    
    $this->design->assign('license'$l);
                }

                
    $this->design->assign('license'$l);
            }
            else{
                die(
    '<a href="http://okay-cms.com">OkayCMS</a>');
            }
        }
    backend/design/html/left.tpl в шаблоне админки
    PHP:
    // код
    <div id="okay_logo">
         <
    a href='index.php?module=LicenseAdmin'><img src="design/images/logo.png" alt="OkayCMS"/></a>
    </
    div>

    // заменяем на любое по вкусу

    <div id="okay_logo">
         <
    a href='index.php?module=SettingsAdmin'><img src="design/images/logo.png" alt="OkayCMS"/></a>
    </
    div>


    // и удаляем в низу
    <div class="license_info">
    {if 
    in_array('license'$manager->permissions)}
        {if 
    $license->valid}
            <
    span><a href='index.php?module=LicenseAdmin'>Лицензия</aдействительна {if $license->expiration != '*'}до {$license->expiration}{/if} для домен{$license->domains|count|plural:'а':'ов'} {foreach $license->domains as $d}{$d}{if !$d@last}, {/if}{/foreach}.</span>
      
        {else}
            <
    span><a href='index.php?module=LicenseAdmin'>Лицензия</aнедействительна.</span>
        {/if}
    {/if}
    </
    div>
    backend/design/css/left.tpl - подчищаем таблицу стиле админки
    PHP:
    .license_info {
        
    margin10px 0;
        
    line-height1.3;
        
    color#243541;
        
    font-size12px;
    }
    api/Managers.php - удаляем
    PHP:
    'license',
    backend/design/html/manager.tpl - в шаблоне редактирования прав доступа к модулям админки, удаляем
    PHP:
    'license'    =>'Управление лицензией',
    Удаляем файлы backend/LicenseAdmin.php , backend/design/html/license.tpl - они нам более не понадобятся
    и каталог backend/files/license/ - он изначально был не нужен

    После проделанного, что при наличии у вас нормального редактора (рекомендую Notepad++ для Windows или Coda для Mac) займет не более 5 минут, чистим лицензию из конфига config/config.php удаляем лицензию
    PHP:
    license y7cfgr9qvv idwptlsxfs qikmoyrnpt putxvrtpx1 vovyvpddnv w9uqox9hwk fzmnlrjzmf nrwqopmvqt wnyylrmurw zdvxrdud9y az79on8kzn 9eyzenailo hzpxisjlmp ouzpwjlbs5 mhp6qqwpyf yttd8j9vrv gosllkhncz onmutmrsmr qzjby2ozs8 vpt7
    и проверяем что все работает

    Так же можно удалить лицензионный ключ из базы (где он изнально был не нужен) - открываем нашу базу в phpMyAdmin
    PHP:
    DELETE FROM s_settings WHERE name 'license'
    Вроде бы ничего не забыл - если что - пишите - исправлю
     
    Последнее редактирование: 27 мар 2016
    inventor69, Evgen13, t33p и 4 другим нравится это.
  2. Mapkyc

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    105
    Симпатии:
    47
    В первой симпле проверка лицензии была еще в JS бекенда, который генерился PHP и стучалка в капче (которая была под хитрым обфускатором). В те годы пропарился пару часов над деобфускацией - безрезультатно. Написал автору одного деобфускатора - через пару часов получил ответ "спасибо за новый обфускатор, вот вам дешифрованный файл". В капче там была стучалка автору, если лицуха левая.

    Вообще при включении головы null сделать достаточно просто. Как то нулил DLEforum, который кстати сам купил легально, там один из системных файлов был под кубиком - ну когда это было помехой :D, код от проверки лицензии весь вычистил, но вот все-равно, при удалении лицензии он переставал работать...Чуть позже нашел хитрость разработчика - require картинки с логотипом модуля для админки. Удаляю require - не работает. Открываю картинку - лезу в EXIF картинки - там PHP код, необходимый для работы и еще проверка лицензии. Переношу часть кода на место бывшего инклуда , чищу картинку от мусора - все работает :lol:

    PHP - это не тот язык, продукт на котором можно реально защитить от копирования. Если разработка стоящая, а вы делаете под проект с серьезными намерениями, а не так для самообучения - то все-таки стоит покупать лицензию. Я лично нулю все купленные скрипты, потому-как дорабатываю под свои нужды, а всякого рода проверки лицензий - могут вызвать различные неприятные глюки.

    Например попадет посетитель на мой сайт по другому адресу, если он крутится еще и на другом домене (такое бывает на некоторых хостингах - бесплатный домен 3его уровня) или например купили мы домен в зоне рф и ру, а редирект на основной не настроили или настройка перестала работать (хостер включил игнорирование подобных деректив)

    Что увидит посетитель сайта? Лицензия не действительна? Это может негативно сказаться на репутации!

    Другой вариант, купил скрипт - сайт работает на хостинге, отладку производим так - скачали копию на локальную машину или технический домен и тут возникает проблема.

    Поэтому даже у купленного скрипта подобные проверки стоит выпиливать полностью если вы делаете серьезный проект!

    Прикреплен модифицированный инсталятор, с вырезанной лицензией!
     

    Вложения:

    Последнее редактирование: 27 мар 2016
    inventor69 и vitsag нравится это.
  3. Seoadd

    Seoadd

    Регистр.:
    21 окт 2012
    Сообщения:
    221
    Симпатии:
    62
    Все проделал вышеперечисленное, работает без проблем. Но на всякий случай поставил на локалку, тут есть возможность мониторить исходящий трафик.
     
  4. Mapkyc

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    105
    Симпатии:
    47
    Нету там стучалок - поставь Notepadd++ и сможешь быстро пробежаться по всем файлам =) Последняя стучалка была в первой версии симплв и вроде (не помню точно) в ImperaCMS

    backend/IndexAdmin.php на 169 открой и посмотри - где то ты прое*ал запиточие!!
    должно было получиться в том районе что-то похожее на

    PHP:
           $this->design->assign('settings',    $this->settings);
            
    $this->design->assign('config',    $this->config);
           
            
    // Язык
            
    $languages $this->languages->languages();
            
    $this->design->assign('languages'$languages);
    смотри каждая строчка кончается на запиточие!
     
  5. Spotty

    Spotty Писатель

    Регистр.:
    26 мар 2016
    Сообщения:
    6
    Симпатии:
    0
    Пробовал нулить самостоянельно последнюю версию, вроде все ок, но после установки все-равно запросила тестовый ключ, сгенерировал и запустил.
    Больше никаких упоминаний нигде о лицензии.
    Это все нормально прошло или где-то что упустил?
     
  6. Mapkyc

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    105
    Симпатии:
    47
    нормально - нужен еще просто модифицированный инсталятор чтобы ключ не просил (он нужен только для инсталятора) - сделаю выложу
     
  7. Spotty

    Spotty Писатель

    Регистр.:
    26 мар 2016
    Сообщения:
    6
    Симпатии:
    0
    Так я сделал, сейчас выложу и кину ссылку, посмотрите, если все ок, то значит ок.
    Делал внимательно и аккуратно.

    Нулка последней версии http://filestore.com.ua/?d=6298205D4
     
  8. Mapkyc

    Mapkyc Постоялец

    Регистр.:
    8 май 2007
    Сообщения:
    105
    Симпатии:
    47
    Добавил в шапку интслятор, без проверки лицензии, чтобы сделать полноценный дистр
     
  9. villain1988

    villain1988 Создатель

    Регистр.:
    26 фев 2013
    Сообщения:
    26
    Симпатии:
    11
    Инструкция рабочая на ОкайЦМС.
    Было бы неплохо сразу поправить скрипт распаковки базы (okay_clean.sql) и убрать оттуда
    Код:
    (112, 'license', 'bhbcfgkhfe iomjlglmpl rqwqxrtpz6 898495c7 cfee'),
     
  10. Hmelex

    Hmelex

    Регистр.:
    15 апр 2008
    Сообщения:
    522
    Симпатии:
    121
    Вот и Всё :facepalm:
    После таких постов (названий тем)

    Настанет всем большая Ж....
    Сменят принцип лицензирования, закодируют код, добавят бекдоры, стучалки и др.

    Каждый мало мальски знающий основы программирования сам нулит скрипты, а теперь - уверенности нет что все будет идти как по маслу начиная со второй версии:mad:

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

    Хотите делать добро - делайте с умом.
    Если человек хочет магазин - но знаний нет, денег нет, времени нет, ничего кроме желания ХОЧУ, ничего хорошего не получится, надо хоть как то потрудиться.......

    Для АВТОРА ТЕМЫ: