Очень скелетная версия будет
<?php
$po = '<' . '?php';
$pc = '?' . '>';
$input = 'file.php';
$code = file_get_contents($input);
$encoded = base64_encode($code);
$encoded_script = <<<EOL
$po
eval(base64_decode($encoded));
$pc
EOL;
file_put_contents('encoded.php', $encoded_script);
Единственное, что делают коммерческие обфускаторы, - это добавляют дополнительные уровни запутывания - переименовывают переменные в бессмысленный мусор. Возможно, измените методы кодирования, разбейте исходный сценарий на несколько частей и каждый из них будет кодироваться по-разному и т. Д. *
Но, в конце концов, все сводится к бесполезному мусору, который защищает как влажную туалетную бумагу.