Взято из демо-версии 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;