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

Mapkyc

Профессор
Регистрация
8 Май 2007
Сообщения
107
Реакции
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], 36, 10)-($i/2+$s)%27;
        $b = base_convert($bl[$i+1], 36, 10)-($i/2+$s)%24;
        $m .= ($b * (pow($a,$p-$x-5) )) % $p;}
    $m = base_convert($m, 10, 16); $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('#', $r, 3);

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

$h = getenv("HTTP_HOST");
if(substr($h, 0, 4) == 'www.') {
    $h = substr($h, 4);
}
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], 36, 10)-($i/2+$s)%27;
                    $b = base_convert($bl[$i+1], 36, 10)-($i/2+$s)%24;
                    $m .= ($b * (pow($a,$p-$x-5) )) % $p;}
                $m = base_convert($m, 10, 16); $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('#', $r, 3);

            $l->domains = explode(',', $l->domains);
            $h = getenv("HTTP_HOST");
            if(substr($h, 0, 4) == 'www.') $h = substr($h, 4);
            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], 36, 10)-($i/2+$s)%27;
                    $b = base_convert($bl[$i+1], 36, 10)-($i/2+$s)%24;
                    $m .= ($b * (pow($a,$p-$x-5) )) % $p;}
                $m = base_convert($m, 10, 16); $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('#', $r, 3);

            $l->domains = explode(',', $l->domains);
            $h = getenv("HTTP_HOST");
            if(substr($h, 0, 4) == 'www.') $h = substr($h, 4);
            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 {
    margin: 10px 0;
    line-height: 1.3;
    color: #243541;
    font-size: 12px;
}

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'

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

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

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

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

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

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

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

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

Вложения

  • install_null.zip
    18,1 KB · Просмотры: 375
Последнее редактирование:
Все проделал вышеперечисленное, работает без проблем. Но на всякий случай поставил на локалку, тут есть возможность мониторить исходящий трафик.
 
Все проделал вышеперечисленное, работает без проблем. Но на всякий случай поставил на локалку, тут есть возможность мониторить исходящий трафик.
Нету там стучалок - поставь Notepadd++ и сможешь быстро пробежаться по всем файлам =) Последняя стучалка была в первой версии симплв и вроде (не помню точно) в ImperaCMS

Zama написал(а):
Доброй ночи!Сделал все по мануале,но при переходе в админку выдает Parse error: syntax error, unexpected '$this' (T_VARIABLE), expecting function (T_FUNCTION) in /home/p349081/www/site.ru/backend/IndexAdmin.php on line 169

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);

смотри каждая строчка кончается на запиточие!
 
Пробовал нулить самостоянельно последнюю версию, вроде все ок, но после установки все-равно запросила тестовый ключ, сгенерировал и запустил.
Больше никаких упоминаний нигде о лицензии.
Это все нормально прошло или где-то что упустил?
 
Пробовал нулить самостоянельно последнюю версию, вроде все ок, но после установки все-равно запросила тестовый ключ, сгенерировал и запустил.
Больше никаких упоминаний нигде о лицензии.
Это все нормально прошло или где-то что упустил?
нормально - нужен еще просто модифицированный инсталятор чтобы ключ не просил (он нужен только для инсталятора) - сделаю выложу
 
Так я сделал, сейчас выложу и кину ссылку, посмотрите, если все ок, то значит ок.
Делал внимательно и аккуратно.

Нулка последней версии Для просмотра ссылки Войди или Зарегистрируйся
 
Так я сделал, сейчас выложу и кину ссылку, посмотрите, если все ок, то значит ок.
Делал внимательно и аккуратно.

Нулка последней версии Для просмотра ссылки Войди или Зарегистрируйся
Добавил в шапку интслятор, без проверки лицензии, чтобы сделать полноценный дистр
 
Инструкция рабочая на ОкайЦМС.
Было бы неплохо сразу поправить скрипт распаковки базы (okay_clean.sql) и убрать оттуда
Код:
(112, 'license', 'bhbcfgkhfe iomjlglmpl rqwqxrtpz6 898495c7 cfee'),
 
Вот и Всё :facepalm:
После таких постов (названий тем)

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

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

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

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

Для АВТОРА ТЕМЫ:
 
Назад
Сверху