Способы создания nulled версии DLE

killoff

Команда форума
Moderator
Разрушитель (V)
Сообщения
182
Симпатии
92
Баллы
1 414
Многие помнят, что, наверное первый из авторов нулл версий ДЛЕ был mid-team (сейчас что то его сайт недоступен), но он давно не создавал новых нуллов ДЛЕ. В данный момент, есть плагин для создания нулла ДЛЕ, есть инструкция, по которой был написал плагин. Но недавно на одом сайте был выложен ещё один способ создания нуллед версии ДЛЕ. В общем решил собрать в данной теме все.

[*]Открываем файл init.php (..\engine\inc\include\init.php) — этот файл обфусцирован ByteRun Protector for PHP.
[*]Чтобы его его деобфусцировать (раскодировать в читабельный вид)ь можно воспользоваться http://www.unphp.net/ - The Online PHP Decode.
[*]Деобфусцированный код вставляем в init.php и сохраняем. Теперь у нас рабочий и раскодированный init.php
[*]После этого можно приступить к удалению функции активации и установленным ограничениям:

[*]Находим и удаляем версию инициализации DLE:
Код:
define( 'DINITVERSION', "xxxx" );
define( 'VERSIONID', "x.x" );
[*]Удаляем функцию отправки активации (send_activation):
Код:
function send_activation( $query ) {

$data = http_get_contents("http://dle-news.ru/extras/activate2009.php?".$query);

if( $data !== false ) {
  if( stristr( $data, "antw:activated" ) ) return "1";
  if( stristr( $data, "antw:denied" ) ) return "0";
}

return "-1";
}
[*]Удаляем функцию получения хеша ключа для нашего домена (get_domen_hash):
Код:
function get_domen_hash() {
$domen_md5 = explode( '.', $_SERVER['HTTP_HOST'] );
$count_key = count( $domen_md5 ) - 1;
unset( $domen_md5[$count_key] );
if( end( $domen_md5 ) == "com" or end( $domen_md5 ) == "net" ) $count_key --;
$domen_md5 = $domen_md5[$count_key - 1];
$domen_md5 = md5( md5( $domen_md5 . "780918" ) );
return $domen_md5;
}
[*]Удаляем функцию активации DLE (dle_activation):
Код:
function dle_activation($key, $domen_md5, $config, $offline = false) {

include (ROOT_DIR . '/language/' . $config['langs'] . '/adminpanel.lng');
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];

$domain = urlencode( strip_tags( $_SERVER['HTTP_HOST'] ) );
$key = trim( strip_tags( $key ) );
@header( "Content-type: text/html; charset=" . $config['charset'] );

if ( $offline ) {

  if( $key == md5( $domen_md5 . DINITVERSION ) ) {

   $buffer = "1";

  } else {

   $buffer = "-2";

  }

} else {

  if( strlen( $key ) == 32 ) {

   $buffer = "-3";

  } else {

   $buffer = send_activation( "domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID );

  }
}

switch ($buffer) {

  case "-3" :
   $buffer = $lang['trial_act6']." ".$lang['key_format']."<b>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</b>";
   break;

  case "-2" :
   $buffer = $lang['trial_act5'];
   break;

  case "-1" :
   $buffer = $lang['trial_act1'] . $lang['get_offline_key'] . " <a href=\"http://dle-news.ru/index.php?do=offlinekey&domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID . "\" target=\"_blank\">" . $lang['get_key'] . "</a> " . $lang['key_activation'];
   $buffer .= "<br /><br /><b>$lang[site_code]</b><span style=\"padding-left:7px;\"><input class=\"edit\" type=\"text\" size=\"45\" name=\"sitecode\" id=\"sitecode\"> <input class=\"edit\" type=\"button\" onclick=\"dle_activation( 'code' ); return false;\" value=\"$lang[trial_act]\"></span><div id=\"result_info\" style=\"color:red;\"></div>";
   break;

  case "0" :
   $buffer = $lang['trial_act2'];
   break;

  case "1" :
   $config['key'] = md5( $domen_md5 . DINITVERSION );

   $handler = fopen( ENGINE_DIR . '/data/config.php', "w" );
   fwrite( $handler, "<?PHP \n\n//System Configurations\n\n\$config = array (\n\n" );
   foreach ( $config as $name => $value ) {
    fwrite( $handler, "'{$name}' => \"{$value}\",\n\n" );
   }
   fwrite( $handler, ");\n\n?>" );
   fclose( $handler );

   $buffer = $lang['trial_act3'];
   break;

  default :
   $buffer = $lang['trial_act4'] . $lang['get_offline_key'] . " <a href=\"http://dle-news.ru/index.php?do=offlinekey&domain={$domain}&key={$key}&site_key={$domen_md5}&c_id=" . VERSIONID . "\" >" . $lang['get_key'] . "</a> " . $lang['key_activation'];
}

echo $buffer;
die();
}
[*]Удаляем переменные проверки ключа для лицензии и домена:
Код:
$lic_tr = true;
$domen_md5 = md5( get_domen_hash() . DINITVERSION );
if( $domen_md5 == $config['key'] ) $lic_tr = false;
[*]Удаляем еще одну проверку активации:
Код:
if( $_REQUEST['activation'] == "yes" AND $lic_tr) {

if( $member_id['user_group'] != 1 ) die();

if ( $_REQUEST['dle_key'] ) dle_activation( $_REQUEST['dle_key'], get_domen_hash(), $config );
else dle_activation( $_REQUEST['site_code'], get_domen_hash(), $config, true );
exit();
}
[*]Удаляем установленное ограничение в 100 новостей и 200 комментариев:
Код:
if( ($mod != "editnews" and $mod != "main" and $mod != "") AND $lic_tr ) {

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post" );
$stats_news = $row['count'];

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_comments" );
$count_comments = $row['count'];

if( $stats_news > 100 ) msg( "info", "error", $lang['trial_limit'] );
if( $count_comments > 200 ) msg( "info", "error", $lang['trial_limit'] );
}

[*]Отключаем проверку обновлений. Для этого откроем updates.php (..\engine\ajax\updates.php) удалим все оттуда. И вставим это:
Код:
<?php
echo <<<HTML
<div class="ui-state-error ui-corner-all" style="padding:10px;"><b>Внимание!</b>
<br />Во избежании проблем, в целях безопасности, проверка обновлений отключена!
</div>
HTML;
?>

Ну вот и всё, проделав эти небольшие изменения с лицензионным DataLafe Engine мы получим полнофункциональную зануленную версию DLE.

Открываем файл: engine/inc/include/functions.inc.php

Находим:
Код:
function send_activation( $query ) {

    $data = http_get_contents("http://dle-news.ru/extras/activate2009.php?".$query);

    if( $data !== false ) {
        if( stripos( $data, "antw:activated" ) !== false ) return "1";
       elseif( stripos( $data, "antw:denied;expires" ) !== false ) return "-4";
        elseif( stripos( $data, "antw:denied" ) !== false ) return "0";
    }

    return "-1";
}
Меняем значения проверок: (где return "значение")
Это:
Код:
elseif( stripos( $data, "antw:denied;expires" ) !== false ) return "-4";
на :
Код:
elseif( stripos( $data, "antw:denied;expires" ) !== false ) return "1";
и Вот это:
Код:
elseif( stripos( $data, "antw:denied" ) !== false ) return "0";
на:
Код:
elseif( stripos( $data, "antw:denied" ) !== false ) return "1";

Сохраняем файл. Теперь при вводе любого ключа в формате XXXXX-XXXXX-XXXXX-XXXXX-XXXXX в Админ Панеле будет произведена успешная активация скрипта.

Первый способ проверен и работает 100%, ниже плагин создан именно по его инструкции. Второй вариант был замечен на одном из сайтов, и его работоспособность не проверялась. Какой вариант использовать - решать вам. Но проще воспользоваться кейгеном, и прописать ключик в engine/data/config.php.

Скачать плагин для создания нуллед версии ДЛЕ 13.2 - 14.1 (по первому варианту) - https://cloud.mail.ru/public/BvuN/oJXVyjU4r
 
Спасибо, хорошая статья, щас как раз надумываю делать сайт и думаю что выбрать дле или преста шоп
 
Спасибо, хорошая статья, щас как раз надумываю делать сайт и думаю что выбрать дле или преста шоп
Как можно сравнивать в выборе совершенно две разные системы заточены под совершенно разные задачи
 
  • Мне нравится
Симпатии: dmx
Как можно сравнивать в выборе совершенно две разные системы заточены под совершенно разные задачи
мне нужно для продажи цифрового контента, ключи к играм, ключи к софту итд. Не подскажите какая лучше всего подойдет
 
  • Мне нравится
Симпатии: dmx
Самое главное это нормальный хостер, которому плевать на абузы dle. А это обнуление пустая трата времени так как все равно вычилят
 
мне нужно для продажи цифрового контента, ключи к играм, ключи к софту итд. Не подскажите какая лучше всего подойдет
DLE совершенно не заточен под магазин, да есть несколько плагинов, но все они очень ограничены. Из бесплатных вариантов, да и не бесплатных тоже, самый оптимальный это opencart
 
они сольют инфу при первой же абузе, самому бы сделать
Во-первых, не согласен по поводу того, что они сольют.
Если кто-то напишет абузу с требованием раскрыть IP-адрес, не думаю, что все подорвались сразу это делать.
А во-вторых, можно самому поднять VPS на Nginx и реализовать такой же функционал проксирования.
VPS сейчас стоят копейки, было бы желание.
 
они сольют инфу при первой же абузе, самому бы сделать
если ты на free тарифе, на платном плане не легко будет получить от них данные клиента. Вообще есть много способов как получить ip на прямую от cloudflare, просто нужно включить мозги;) но это только если сайт на free сидит.

Ставишь дешёвый впс и проксируешь сайт используя nginx
Соглашусь с тобой полностью, лучший веб сервер это тот который собран своими руками под свои нужды, я тут недавно настраивал человеку cloudflare, и заметил у них появилась функция brotli решил протестировать, это шок, gzip жмёт лучше чем их "настроенный" brotli, это уже о многом говорит какое отношение у них к людям кто не платит деньги.
 
Вообще есть много способов как получить ip на прямую от cloudflare, просто нужно включить мозги;)
Если Cloudflare настроен правильно, узнать IP практически нереально.
Особенно при одновременном переезде домена на другой сервер и правильной настройке Cloudflare.
 
Если Cloudflare настроен правильно, узнать IP практически нереально.
Особенно при одновременном переезде домена на другой сервер и правильной настройке Cloudflare.
Мне абуза была где то картинку спарсило, к сайт под cloudflare. Абузу им и скинули, он аккаунт блокнул со всеми сайтами и сам лично написал абузу хостеру ещё и показал запрос как чекать ip. Мне хостер это письмо перенаправил.
Да и хостер Инферно чекал сайты под клаудом с разных регионов раши, и большой процент не открывается, вроде около 30 процентов
 
Мне абуза была где то картинку спарсило, к сайт под cloudflare. Абузу им и скинули, он аккаунт блокнул со всеми сайтами и сам лично написал абузу хостеру ещё и показал запрос как чекать ip. Мне хостер это письмо перенаправил.
Да и хостер Инферно чекал сайты под клаудом с разных регионов раши, и большой процент не открывается, вроде около 30 процентов
А как чекать?
 
Назад
Верх