• wollte ich euch nicht vorenthalten:


    Quelle: http://manuel-pichler.de/archives/60-Why-I-love-PHP.html


  • Wo ist da ein Problem? Wo ist da eine lösung? Ich checks nicht, ich wusste nichtmal, dass das gültig ist^^. Was ist die ausgabe?

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Gute Obfuscatortechnik :)

    Aber das bekommt man in anderen Sprachen auch so hin^^

  • Ausgabe: bar()
    Naja, so verquer ist das gar nicht, man muss keinen großen Stack im Kopf aufbauen zum Interpretieren, denn die meisten Sachen machen einfach nichts.

    Außerdem ist das nichts gegen Scheme, das ist aber leider weniger kompakt, oder Lambda-Kalkül.

  • Naja, wenn man nicht weiss, was new ${(string) new ${$v = 'v'}()}(); heisst, dann, kann man den stack auch nicht aufbauen...
    Ich sehe da aber einen grund mehr, warum PHP so langsam ist - mit sovielen syntaktischen möglichkeiten, kannd as nicht schnell sein.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Ausgabe: bar()
    Naja, so verquer ist das gar nicht, man muss keinen großen Stack im Kopf aufbauen zum Interpretieren, denn die meisten Sachen machen einfach nichts.

    Außerdem ist das nichts gegen Scheme, das ist aber leider weniger kompakt, oder Lambda-Kalkül.

    __METHOD__ gibt auch den Klassennamen mit aus ;)


  • Tobse
    Das ist jetzt aber ein Allgemeinplatz, weiß nicht, ob du eine Ahnung hast, wie so Sprachen implementiert sind. Dein Satz mag vllt. sogar stimmen in diesem Zusammenhang, aber es geht einfach nicht um Syntax, sondern um andere Dinge.

    @Jojo
    Ah okay, leicht falsche Implementierung in meinem Kopf, aber im Prinzip richtig. :D

  • Würde auch gerne hier mit talken aber [Blockierte Grafik: http://www.planet-smilies.de/a_smilies/schilder_3.gif]



    Bei dem Beitrag vom jojo geht es um die Obfuscation von Quellcode. Das heisst der Quellcode wird verschleiert, so dass falls jemand irgendwie daran kommt, nicht viel damit anfangen kann, ohne großen Aufwand in die Entschleierung zu stecken.
    Hier ein Beispiel:

    PHP
    <?php
    function say($str)
    {
        echo $str;
    }
    
    
    say("Hello World");
    ?>

    Die Funktion say() übergibt den String "Hello World" und in der Funktion wird dieser String mit echo (Funktion zur Ausgabe von Text) ausgeben. Wenn man das Dokument ausführt, wird also ein Hello World angezeigt.
    Lässt man einen Obfuscator darüber laufen erhält man:

    Wie dir auffällt ist der Code länger geworden, denn er wurde stark verschleiert (Auch wenn der blöde Online Obfuscator da nicht richtig funzt, naja es geht ja nur ums Verständnis). Der Code selbst tut aber im Endeffekt immernoch das selbe. Wenn man jetzt z.B. Google ist und möchte nicht, dass man das Javascript, dass dort für diverse Sachen benutzt wird, durchforstet wird, dann benutzt man einen Obfuscator. (Siehe http://google.de und dann STRG + U)
    In PHP wird ein Obfuscator eher relevant, wenn man PHP Projekte für Kunden programmiert, die Daten enthalten, die den Kunden nichts angehen. z.B. einen geheimen Algorithmus oder sowas.
    Hauptsächlich, vermute ich mal, wird die Obfuscation eher bei der Softwareentwicklung benutzt, um zu verhindern, dass Cracker den Quellcode der .exe Datei wieder herstellen kann (Reverse Engeneering), um dann eine Sicherheitsprüfung herauszunehmen, die zum Beispiel einen Kopierschutz entfernt.

    Gruß crAzywuLf :D

    2 Mal editiert, zuletzt von crAzywuLf (25. Januar 2011 um 10:32)

  • Naja, ich glaube, es ging Jojo eher darum, ein wenig zu demonstrieren, wo PHP sehr flexibel ist.
    Naja, ich bezweifle stark, dass man einen „tollen, strenggeheimen Algorithmus“ damit verstecken kann, mit dem base64 schon gar nicht. :D
    Abgesehen davon: Macht es nicht mehr Sinn, wenn man so blöd geheimniskrämerisch ist, PHP in binärform auszuliefern mit nem kleinen Lade-Skript, gibt doch so Bytecode-Compiler…