Obfuscateur d'espaces blancs pour PHP

Après avoir lu un article sur l'obfuscation en JavaScript (à savoir la 3e partie de l'article), je me suis intéressé à un obfuscateur similaire pour PHP.

L'obfuscateur dont il a été question dans l'article a transformé le code JavaScript en invisible (à première vue), composé de tabulations et d'espaces.

L'essentiel est de présenter chaque symbole du code source comme le code de ce symbole traduit dans un système binaire. Remplacez ensuite 1 par des espaces et 0 par des tabulations (vous pouvez bien sûr et vice versa).

Avec l'implémentation de cet algorithme en PHP, tout est simple, comme en JavaScript.

Code d'obscurcisseur:

function obfuscate($code) { $len = strlen($code); $obf = ''; for ($i = 0; $i < $len; $i++) { //        i-  $bin = decbin(ord($code[$i])); //      ,      0 $bin = ($binLen = strlen($bin) > 7) ? $bin : implode('', array_fill(0, 8 - strlen($bin), '0')) . $bin; //    1  ,  0        ,      $obf .= str_replace(array('1', '0'), array(chr(9), chr(32)), $bin); } return $obf; } 

Tout semble normal ici (si vous n'entrez pas dans les détails), je vais maintenant donner un exemple d'appel d'un code obscurci.

Deobfuscator ("interprète")

 function include_o($file) { $file = trim($file); //     if ( empty($file) || !is_readable($file) ) { throw new Exception("Filename is empty or file isn't readable"); } $string = file_get_contents($file); $len = strlen($string); $out = ''; for ($i = 0; $i < $len; $i++) { /* *  8      , *               */ $out .= chr(bindec(str_replace(array(chr(9), chr(32)), array('1', '0'), substr($string, $i, 8)))); $i += 7; } if (!empty($out)) { eval($out); } } 

Il semble que la valeur retournée par la fonction sera «mélangée» (si je comprends bien, alors nulle - comment en ferait-elle partie?), Mais c'est si vous entrez dans les détails.

Conclusion

Il me semble que cela s'est avéré assez tolérable, mais ce type ne peut toujours pas prétendre à un obfuscateur fonctionnel (implicite utilisé dans la pratique) (je sais, une chose banale a été dite). C'était plutôt fait pour le plaisir, au moins j'étais intéressé de voir le résultat.
Merci, bonne chance.

Source: https://habr.com/ru/post/fr458710/


All Articles