phpbar.de logo

Mailinglisten-Archive

[php] =?iso-8859-1?Q?Verschl=FCsseln?= von PHP-Source-Code

[php] =?iso-8859-1?Q?Verschl=FCsseln?= von PHP-Source-Code

Oliver Kummerow naklar_(at)_altavista.net
Tue, 29 Feb 2000 18:45:58 +0100


Hi,

> hört sich ja nicht gut an, das es kaum (keine) Möglichkeit gibt den
> PHP-Code so zu "verunstalten", daß einem nicht alles geklaut wird!
> Funktioniert das "preprocessed" auch unter PHP4?
> Hat jemand eine kreative Idee wie man sich den Code schützen lassen
> kann?

Nimm mal als Vergleich Java. Dort gibt es auch Bytecode-Compilation und
es wird damit genau wie potentiell mit Zend Systemunabhängigkeit
erreicht. Naja, und diesen Bytecode kann man ohne weiteres
decompilieren, Angaben dazu unter:
http://www.geocities.com/SiliconValley/Foothills/5270/Texte/FAQ/node14.html. 

Auf den PHP4-Compiler zu warten, ist so gesehen, müßig, weil überhaupt
nichts dagegen spricht, Bytecode-Tokens wieder in Quellcode
zurückzuverwandeln. Da das informationstechnisch möglicherweise sogar
eine Lappalie darstellt, wird es gelegentlich entsprechende Tools geben.
Das beworbene Feature des Zend-Compilers ist imho bisher auch eher
Performancesteigerung, weniger Code-Kryptographie. Wenn es ihn überhaupt
jemals geben wird, denn anscheinend wird ja bereits aus PHP4 das letzte
Quentchen Performancesteigerung herausgequetscht, um hier und da einige
Lücken zu Perl und ASP zu schließen. Letztlich ist das also alles mehr
oder weniger Augenwischerei. Decompilieren wird niemals unmöglich sein,
höchstens teurer, weil zeitaufwendiger.


> Wenn ich das php -p hello.php3 auf der DOS-Ebene versuche einzugeben
> bringt er mir seltsame Fehlermeldungen (DLL nicht gefunden ....), was
> mache ich falsch? Er erstellt dennoch einen kryptischen file, der auch
> unter IIS ausgeführt wird...

Um zumindest einem nicht professionellen Dechiffrierer das Leben
schwerer zu machen und einen Profi zu nerven, gibt es ein paar uralte,
unschöne, aber erprobte Ansätze (mal in irgendeiner c't gelesen :) :
Einfacherweise schreibst Du Dir einen speziellen Parser (möglichst nicht
in PHP, das ist als Interpreter für byteweises Parsing etwas zu
langsam), der den kompletten Source-String durchackert und bei der
Gelegenheit a) alle Kommentare entfernt, b) sämtliche (überflüssigen)
Whitespaces entfernt, c) Variablennamen durch Zufallsbegriffe ersetzt,
d) Funktionsnamen dito. Danach wird der Aufwand für ein Reengeneering
extrem hoch, besonders wenn man ohnehin komplexe und wirr aussehende
Strukturen verwendet ;-). Der Aufwand, um so etwas zu schreiben, ist
aber vermutlich ebenfalls extrem hoch. :) 
Nebeneffekt wäre, daß der Code kleiner wird und somit schneller
interpretiert werden kann, also die Performance etwas verbessert ist. 

Der Aufwand für ein solches Verfahren könnte den Nutzen übersteigen.
Z.B. habe ich bis jetzt noch nicht einmal eine sichere Methode gefunden,
mit Regex Blockkommentare zu entfernen.



mit freundlichen Grüßen, 
oK.


php::bar PHP Wiki   -   Listenarchive