Supondo que você não use esses truques em nenhum lugar, por que não isso (apropriadamente executado, usando sed -i
e talvez find -exec ...
, o que não fazia parte da sua pergunta, foi?)
$ sed 's/eval(gzuncompress(base64_decode(.*)));//' << EOF
> <?php eval(gzuncompress(base64_decode('eF5Tcffxd3L0CY5WjzcyNDGGMV4+1dSwqSqzU0LQGAJCPCMM=')));eval(gzuncompress(base64_decode('eF5LK81LLsnMzKx+JjNW0rgUAqDUUxQ=='))); eval(gzuncompress(base64_decode('eF6VlMmy/3sMxOez/iJOojHFT0Ig/8jlTymmN/I=')));?>
> EOF
<?php ?>
... você pode depois lidar com o <?php ?>
s vazio (o que não dói muito, não é?).
Editar removeu as quebras de linha para garantir que se ajusta à situação descrita.
Edit2 Seria melhor você apenas substituir tudo por um backup ( bom conhecido ), provavelmente, se tiver um.
Edit3 Acabei de pegar o bit "todos os arquivos index.php". Você pode, assim, tentar algo como
find /path/to/wwwroot -name "index.php" -exec sed -i regex {} \;