Опубликовано 29.04.2015, 19:18 by Jerry в разделе DLE / Хаки0

Создание своей null версии DLE

1 - раскодируем файл init.php при помощи сервиса UnPHP - The Online PHP Decoder 2. Находим и удаляем версию инициализации 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 .= "

<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;\">";
	   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>

Во избежании проблем, в целях безопасности, проверка обновлений отключена!
</div>
HTML;
?>


Добавить комментарий

0 Комментариев

Добавление комментария

Я бы хотел услышать Ваши мысли. Не стесняйтесь оставить свой комментарий и присоединиться к беседе!

Чей это блог?
Введите код: * Кликните на изображение чтобы обновить код, если он неразборчив