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

Автор: | 6 февраля 2012

Взято из демо-версии DLE:

<?php $_F=__FILE__;$_X='STRING=';$_D=strrev('edoced_46esab');eval($_D('STRING2=='));?>

В коде бросаются в глаза две длиннющие строки в base64, раскодировать “в лоб” можно только вторую, там содержится кусок кода для дешифрации первой строки (STRING=). Причесанный вид файла:

$_F = __FILE__;
$_X = 'STRING=';
$_D = strrev( 'edoced_46esab' );
eval( $_D( 'STRING2==' ) );

edoced_46esab – это всего лишь перевертыш base64_decode. Вторая строка (STRING2==) после раскодировки и причесывания:

$_X = base64_decode( $_X );
$_X = strtr( $_X, 'STR1', 'STR2' );
$_R = str_replace( '__FILE__', "'".$_F."'", $_X );
eval( $_R );
$_R = 0;
$_X = 0;

Опять eval, от которого нужно избавиться. Собственно, интерес представляют только 2 и 3 строки. Дальше, общая раскодировка выглядит так:

$_F = __FILE__;
$_X = 'STRING=';
$_X = base64_decode( $_X );
$_Y = 'STRING2==';
$_Y = base64_decode( $_Y );
$_P = array(); // массив строк, которые будут вырезаны
$_P[0] = '$_X=base64_decode($_X);';
$_P[1] = 'eval($_R);$_R=0;$_X=0;';
$_Y = str_replace($_P, '', $_Y);
eval($_Y);
echo $_X;

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