Mailinglisten-Archive |
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