Whitespace Obfuscator für PHP

Nachdem ich einen Artikel über die Verschleierung in JavaScript gelesen hatte (nämlich den 3. Teil des Artikels), interessierte ich mich für einen ähnlichen Verschleierer für PHP.

Der im Artikel behandelte Verschleierer machte den JavaScript-Code (auf den ersten Blick) unsichtbar und bestand aus Tabulatoren und Leerzeichen.

Unter dem Strich wird jedes Symbol des Quellcodes als der Code dieses Symbols dargestellt, der in ein Binärsystem übersetzt wird. Ersetzen Sie dann 1 durch Leerzeichen und 0 durch Tabulatoren (Sie können natürlich und umgekehrt).

Mit der Implementierung dieses Algorithmus in PHP ist alles einfach, wie in JavaScript.

Obfuscator Code:

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; } 

Hier scheint alles normal zu sein (wenn Sie nicht auf Details eingehen), jetzt gebe ich ein Beispiel für das Aufrufen eines verschleierten Codes.

Deobfuscator ("Darsteller")

 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); } } 

Es scheint, dass der von der Funktion zurückgegebene Wert "gemischt" ist (wenn ich das richtig verstehe, dann ungültig - wie wäre es ein Teil?), Aber dies ist, wenn Sie auf Details eingehen.

Fazit

Es scheint mir, dass es ziemlich erträglich geworden ist, aber dieser Typ kann immer noch nicht behaupten, ein funktionierender (in der Praxis impliziter) Verschleierer zu sein (ich weiß, es wurde eine banale Sache gesagt). Es wurde eher zum Spaß gemacht, zumindest war ich daran interessiert, das Ergebnis zu sehen.
Danke, viel Glück.

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


All Articles