Создание своего DLE Nulled на примере версии 10.2.
Многие наверное задавались вопросом, как сделать Null DLE. На самом деле здесь нет ничего сложного.
Начнем по порядку:
1. Скачиваем чистую DLE
2. Открываем файл init.php (..\\engine\\inc\\include\\init.php) — этот файл обфусцирован ByteRun Protector for PHP.
3. Теперь нам нужно его деобфусцировать (раскодировать в читабельный вид). Для этого можно воспользоваться
4. Деобфусцированный код вставляем в init.php и сохраняем. Теперь у нас рабочий и раскодированный init.php
5. А теперь будем удалять функции активации и установленные ограничения:
а) Находим и удаляем версию инициализации DLE:
define( \’DINITVERSION\’, «1002» );define( \’VERSIONID\’, «10.2» );[/code]
б) Удаляем функцию отправки активации (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»;}[/code]
в) Удаляем функцию получения хеша ключа для нашего домена (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;}[/code]
г) Удаляем функцию активации 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\’].»<bXXXXX-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();}[/code]
д) Также удаляем переменные проверки ключа для лицензии и домена:
$lic_tr = true;$domen_md5 = md5( get_domen_hash() . DINITVERSION );if( $domen_md5 == $config[\’key\’] ) $lic_tr = false;[/code]
е) Удаляем еще одну проверку активации:
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();}[/code]
ж) И удаляем установленное ограничение в 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\’] );}[/code]
6.
Можно отключить проверку обновлений. Для этого откроем updates.php
(..\\engine\\ajax\\updates.php) удалим все оттуда. И вставим это:
<?phpecho <<<HTML<div class=»ui-state-error ui-corner-all» style=»padding:10px;»Внимание!</b><br />Во избежании проблем, в целях безопасности, проверка обновлений отключена!</div>HTML;?>[/code]