Encrypt your Website… – was soll das bedeuten und was ist der Sinn dahinter?

Nun, dies soll lediglich in einem kleinen Beispiel veranschaulichen, wie man lesbaren Text (bzw. Code) in “unlesbaren” wandeln kann, um diesen weniger nachvollziehen zu können. Ein Obfuscator wird versuchen, den Code in kryptische Zeichenfolgen umzuschreiben, um die Lesbarkeit für den Menschen zu erschweren. Für den Compiler/Interpreter ist dies jedoch egal – er funktioniert weiterhin fehlerlos.

Angewandt auf die eigene Webseite kann das dann z.B. so aussehen:

<?php
   $txt1 = "My first PHP-Code";
   $txt2 = "Learn Coding";

   $x = 5;
   $y = 4;

   print "<h2>" . $txt1 . "</h2>";
   print "Study PHP at " . $txt2 . "<br>";
   print $x + $y;
?>

 

Lässt man darüber einen Obfuscator laufen, könnte der Codeausschnitt dann so aussehen:

<?php 
   $ebvpzmbl2239131127 = "My first PHP-Code";
   $boovpuss478100557 = "Learn Coding";

   $uxmmhqqn2363233923 = 5;
   $cuotlukn4225443349 = 4;

   print "<h2>" . $ebvpzmbl2239131127 . "</h2>";
   print "Study PHP at " . $boovpuss478100557 . "<br>";
   print $uxmmhqqn2363233923 + $cuotlukn4225443349;
?>

Wie man unschwer erkennen kann, ist der Code für den Menschen jetzt schwieriger zu lesen.

 

Das kann man noch weiter erschweren, in dem man unnötigen Code entfernt und einen sogenannten “One-Liner” erstellt.

<?php $pjappgft2239131127="My first PHP-Code";$qcmhtmpj478100557="Learn Coding";$jfcurldp2363233923=5;$hpoyzcxc4225443349=4;print"<h2>".$pjappgft2239131127."</h2>";print"Study PHP at ".$qcmhtmpj478100557."<br>";print$jfcurldp2363233923+$hpoyzcxc4225443349;?>

Auch hier ist noch “Potential” nach oben. Zusätzlich könnte man die noch lesbaren Strings (“My first PHP-Code”, “Learn Coding”, …) mittels Base64_decode() in nicht lesbare Strings umschreiben lassen. Damit wäre dann auch der letzte, für den Menschen lesbare, Rest kryptisiert.

 

Nach dem nun auch die String umgeschrieben wurden, sieht der Code am Ende so aus. Ein schöner “One-Liner”, der das Nachvollziehen des Codes absolut erschwert.

<?php $eyecrevk_85766df7=base64_decode('TXkgZmlyc3QgUEhQLUNvZGU=');$qyyalkgp_1c7f3c4d=base64_decode('TGVhcm4gQ29kaW5n');$wkzidquq_8cdc1683=5;$gdkkmkri_fbdb2615=4;printbase64_decode('PGgyPg==').$eyecrevk_85766df7.base64_decode('PC9oMj4=');printbase64_decode('U3R1ZHkgUEhQIGF0IA==').$qyyalkgp_1c7f3c4d.base64_decode('PGJyPg==');print$wkzidquq_8cdc1683+$gdkkmkri_fbdb2615;?>

 

Als Hinweis sei noch gesagt, dass alle 4 Code-Snippets das Gleiche machen, da es dem Compiler/Interpreter egal ist, ob er “lesbare” Variablen hat oder nicht. Jedoch ist der 4. Ausschnitt für den Menschen schon kaum mehr nachzuvollziehen.

 

Warum das Ganze betrieben wird, kannst du hier nachlesen -> https://php-obfuscator.de/php-obfuscator-warum/

Download des Programms “PHP-Obfuscator” für Windows hier klicken

(benötigt .NET-Framework)