Tester für phpkopierschutz gesucht.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #46
    Original geschrieben von tstoffregen
    Also muss ich mit den dynamischen Ebenen doch noch weitermachen. :-)
    was willst du noch mit dynamischen ebenen bauen? im grunde kommst du doch um 3 dinge nicht herum:

    1. das script sendet eine anfrage an den lizenzserver
    2. server antwortet mit code
    3. code wird evaluiert

    ^^ ob das 1x läuft oder 5x, ist doch egal. du schickst mir den code, ich finde die notwendigen stellen (bzw. mein script) und gebe dir, was du willst. im oben genannten fall, einen unverdächtigen php-code mit dem unmanipulierten lizenzschlüssel-aufruf am anfang.

    jede stufe, die deinerseits dazukommt, kostet zeit. die geschützte applikation braucht auch nochmal rechenzeit. wieder ein nachteil ... vor allem im vergleich zu zend oder ioncube.

    nochmal das thema "zeit": du schreibst, dass deine variablen nur eine bestimmte zeit gültig sind. hier musst du berücksichtigen, dass die kommunikation von server zu server auch mal gestört werden kann. was pasiert dann? variablen-laufzeit abgelaufen, weil der connect 0,7 sec statt 0,3 gedauert hat mit dem ergebnis, dass unberechtigt die lizenz gesperrt wird? ... imho wieder eine schwachstelle. entweder hast du permanent genervte kunden am rohr, die unberechtigterweise gesperrt sind oder ein angreifer hat genügend zeit, zu probieren.
    Kissolino.com

    Kommentar


    • #47
      Original geschrieben von tstoffregen
      Welchen Sinn sollte es haben den eigenen Kopierschutz zu umgehen.

      Ein reales Zenario: Du schreibt eine Software und stellst Deinen Kunden eine kopiergeschützte Version zur Verfügung. Selbstverständlich mit Deinem eigenen Lizenzserver.
      Nein, das ist das Szenario, welches für bereits als zu unzuverlässig abgelehnt haben.

      Aus meiner Sicht als Kunde läuft was wichtiges ausschließlich auf meinem Server, ohne Abhängigkeiten von Fremdservern, deren Zuverlässigkeit und Sicherheit nicht meiner Kontrolle und Beeinflussung unterliegen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #48
        Original geschrieben von Wurzel
        so, mal ein kleiner zwischenstand:
        PHP-Code:
        //phpinfo();

        eval("$aa1"); 
        das war der code, der in der 2. stufe bei mir ankam (hab mal ein paar teile entfernt).

        Auf der anderen Seite wäre so eine Situation im normalen Leben nicht
        passiert, bzw. ich habe den inhalt des eingesetzten Scripts und der würde
        mit sicherheit für einen strafantrag reichen.

        Als Startscript wurde ein Parserscript eingesetzt. Das ist natürlich nicht
        Sinn der Sache. Normalerweise wird der Inhalt des geschützten Scriptes vom
        Softwarehersteller in der Datenbank hinterlegt. Ich habe leider für
        Testzwecke zugelassen, das der Inhalt von ersten Aufruf geschützt wird. Wenn
        das schon ein parserscript ist, ist es natürtlich dumm für mich. Aber wie
        gesagt, dafür ist es ein Test. :-)

        Ich werde die Ebenen jetzt so dynamisch wie möglich machen.
        Wenn das parsen länger dauert als die Gültigkeit des Codes habe ich mein Ziel doch erreicht.

        Sollte der Code nicht mehr gültig sein, kommt zur Zeit eine Fehlermeldung. man könnte aber auch die grundebene wieder neu starten das parsen wird dadurch auch nicht schneller.

        LG

        Thomas
        --
        0208/9939318

        Kommentar


        • #49
          Original geschrieben von onemorenerd
          Deine potenziellen Kunden wollen ja nicht die Katze im Sack kaufen. Sie verlangen eine Darstellung des Konzepts.

          Und das mache ich hiermit auch. Beschreibe uns das gesamte Konzept / den Algorithmus!

          Ein echter Kopierschutz bietet auch dann noch Schutz, wenn seine Details öffentlich sind. Sonst ist es lediglich Obfuscating oder gar nur Hoaxing.

          Und komme jetzt nicht mit "kann es nicht veröffentlichen, ist ja meine Geschäftsidee"! Zu dieser Idee gehört schließlich auch die Auslieferung der Scripte als "Lizenzserver" und damit dürften die Interna ziemlich schnell publik werden.
          Ich werde den Code später sehr wahrscheinlich als open source deklarieren. Ich möchte nur den nächsten Schritt ohne fremde Hilfe schaffen. Schaffe ich das nicht, kann ich das Teil eh veröffentlichen. Ausserdem gibt es noch Möglichkeiten die Performance zu verbessern, bei der ich zwar die Idee habe, aber nicht in der Lage bin das selbst zu realisieren.

          Ich komme ursprünglich aus der SPS-Programmierung und habe mir die Programmierung in 20 Jahren, über C64-Assembler, Pascal, C, PHP,... selbst beigebracht. Vieles entsteht mit Learning by doing.

          Ich habe mit meiner Programmierung unter Linux auch schon sehr gute Erfolge gehabt. Unter anderem war ich knapp vier Jahre als freiberuflicher Programmierer für die erst WestLB, später WestLB Systems tätig. Dort habe ich eine Applikationsüberwachung für eine SER-Software (Anlagekonto/Fondsverwaltung) in zwei Releaseständen, völlig automon geschrieben. Auch die Idee kam von mir. Die Überwachung läuft heute noch produktiv und meldet jegliche Ausfälle in Echtzeit dem Operating. Leider ging es 2001 durch Krankheit nict mehr weiter. Heute bin ich 42 und Quereinsteiger, mein erster Beruf ist Binnenschiffer, ohne Abi oder Studium. Und von den paar Einsätzen die ich mit Kunden habe lebt man mehr schlecht als recht. Daher möchte ich meine Idee den Kopierschutz unparsbar zu machen, erst noch alleine versuchen.


          LG

          Thomas
          --
          0208/9939318

          Kommentar


          • #50
            Original geschrieben von 3DMax
            kein problem.
            gegenfrage, schaffst du es noch, dass mein script überhaupt erstmal läuft, ohne gleich gesperrt zu werden?
            Hast Du den Pfad manuell eingegeben? Da war noch ein Fehler drin. Der Fehler ist aber behoben und du kannst es erneut testen.

            Ich habe gerade gesehen, das Teil ist nur geknackt worden weil unter anderem im Pfad "c\Apache\\Apache\\htdocs\\test.php(109) : eval()\'d code" stand. Das ist im normalen Leben nicht möglich, weil Pfad und Inhalt der Datei vorgegeben sind.

            LG

            Thomas
            --
            0208/9939318

            Kommentar


            • #51
              Original geschrieben von Wurzel
              so, mal ein kleiner zwischenstand:[PHP]//phpinfo();
              das war der code, der in der 2. stufe bei mir ankam (hab mal ein paar teile entfernt).
              Versuch Dein Script doch nochmal laufen zu lassen. Ich habe die Variablennamen geaendert.

              Wenn es so einfach war, dürfte es doch kein Problem sein oder?

              Gruß

              Thomas
              --
              0208/9939318

              Kommentar


              • #52
                Original geschrieben von tstoffregen
                Versuch Dein Script doch nochmal laufen zu lassen. Ich habe die Variablennamen geaendert.
                Wenn es so einfach war, dürfte es doch kein Problem sein oder?
                bin noch gesperrt? id 1035
                Kissolino.com

                Kommentar


                • #53
                  Original geschrieben von Wurzel
                  bin noch gesperrt? id 1035
                  ist wieder frei.

                  Und wieder gesperrt.

                  Kommt Dir das bekannt vor?

                  ---
                  function huhu()
                  {
                  $v = \"make my day\";
                  }
                  ?\'.\'>\'));

                  ---

                  LG

                  Thomas
                  Zuletzt geändert von tstoffregen; 07.12.2006, 14:14.
                  --
                  0208/9939318

                  Kommentar


                  • #54
                    Original geschrieben von tstoffregen
                    [B]Hast Du den Pfad manuell eingegeben? Da war noch ein Fehler drin. Der Fehler ist aber behoben und du kannst es erneut testen.

                    Ich habe gerade gesehen, das Teil ist nur geknackt worden weil unter anderem im Pfad "c\Apache\\Apache\\htdocs\\test.php(109) : eval()\'d code" stand. Das ist im normalen Leben nicht möglich, weil Pfad und Inhalt der Datei vorgegeben sind.
                    ja, habe den korrekten pfad eingegeben.
                    der o.g. pfad ist nicht meiner. ich bin auch immer noch gesperrt id 1013. und was ist nun mit "Notice: Use of undefined constant..." davon bekomme ich knapp 30 fehlermeldungen ist ja wohl auch nicht i.o.

                    Kommentar


                    • #55
                      Original geschrieben von 3DMax
                      ja, habe den korrekten pfad eingegeben.
                      der o.g. pfad ist nicht meiner. ich bin auch immer noch gesperrt id 1013. und was ist nun mit "Notice: Use of undefined constant..." davon bekomme ich knapp 30 fehlermeldungen ist ja wohl auch nicht i.o.
                      Die Fehlermeldungen mit den Konstanten sind normal. Leider.

                      Bsp:

                      $a="fopen";
                      ${a}(...); Ist von der Sytax korrekt ergibt aber eben diese Fehlermeldung im Debugger.

                      ich hätte auch $a(...) schreiben können, aber daduch ist der Inhalt der Variable schon mit einem Debugger sichtbar.

                      Ich habe den Pfad korregiert und dich wieder freigeschaltet.

                      Wenn Du nichts geändert hast seit deinem ersten Aufruf müsste es auf Anhieb laufen. Ansonsten wird die Lizenz gesperrt weil der Dateiinhalt verändert wurde.

                      Frag Wurzel. Der hat die Erfahrung gerade gemacht. :-)

                      LG

                      Thomas
                      Zuletzt geändert von tstoffregen; 07.12.2006, 14:16.
                      --
                      0208/9939318

                      Kommentar


                      • #56
                        ok, meine zeit ist momentan etwas knapp.

                        du möchtest jetzt in der ersten stufe das aufrufende script auslesen und auf deinen server übertragen. da ich von verherigen versuchen weiss, was da läuft, ist es etwas einfacher. aber das entschleiern der vars ist ja nun kein akt.

                        ich würde dir jetzt per preg_replace nachdem der befehl zum code auslesen kommt, meinen dummy-code einspeisen. danach bekomme ich von dir stufe2. wahrscheinlich ist der code nun hier auch verschleiert, also dasselbe spiel wie oben nochmal. etc. pp.

                        hab grad nochmal die gegenprobe gemacht ohne code einzufügen und bin wieder gesperrt.

                        wenn du mitloggst, hast du jetzt
                        5-6 erstaufrufe ohne weitere rückmeldung, weil ich das unterbunden habe.
                        1 aufruf mit bewusst manipuliertem code, der zur sperre führt als gegenprobe.

                        ohne es jetzt näher zu prüfen, imho keine große verbesserung.
                        meine mail angekommen?
                        Kissolino.com

                        Kommentar


                        • #57
                          so, ich habs:

                          $data33=stripslashes(base64_decode(\"ZWNobyAnaGFsbG8nOw==\"));
                          da steht mein code echo 'hallo';
                          und von mir aus kannst du noch 1000 ebenen einbauen, ich bekomme das in ein paar sekunden raus.



                          PHP-Code:
                          //phpinfo();
                          $atest3=explode(\'(\',__FILE__);
                          $thisfile3=addslashes($atest3[0]);
                          $reffile3=addslashes(\"E:\\\\Internet\\\\Webshop\\\\htdocs\\\\test2.php\");
                          $host3=\"phpschutz.os-st.de\";
                          $path3=\"/codeschutzmain.neu.php\";
                          $data3=\"sid=1040&p911d33a9eacfb30c51c672ca73893669=1164847316

                          &s2ca4eaacfe6ff7314bed1adc92abf74e=3&c0f0ffc1c2ebb7b309c3433fadab

                          8cb35=d7780b2aaea7e01f9b419021b4198c2d&scaf776675450c5f8759950497f7980319=$thisfile3\";
                          $fp3 = fsockopen($host3, 80);
                          fputs($fp3, \"POST $path3 HTTP/1.1\\r\\n\");
                          fputs($fp3, \"Host: $host3\\r\\n\");
                          fputs($fp3, \"Content-type: application/x-www-form-urlencoded\\r\\n\");
                          fputs($fp3, \"Content-length: \". strlen($data3) .\"\\r\\n\");
                          fputs($fp3, \"Connection: close\\r\\n\\r\\n\");
                          fputs($fp3, $data3);
                          $con3=0;
                          $res3=\"\";
                          $data33=stripslashes(base64_decode(\"ZWNobyAnaGFsbG8nOw==\"));
                          eval($data33);
                          unset($data33);
                          while(!feof($fp3))
                          {
                            $resstr3 = fgets($fp3, 12800);
                            if ($con3 == 1) $res3 .= $resstr3;
                            if ( \"$resstr3\" == \"\\r\\n\") $con3=1;
                          }
                          fclose($fp3);
                          $aa3=stripslashes(base64_decode($res3));
                          $aa1=base64_decode($aa3);
                          $aa33=stripslashes($res3);
                          //eval(\"$aa1\");
                          //unset($resstr);unset($con);unset($res2);unset($atest);unset($thisfile11);
                          unset($reffile11);unset($host);unset($path);unset($data);unset($a00);unset($aa00);

                            unset($resstr0);
                            unset($resstr1);
                            unset($resstr3);
                            unset($thisfile0);
                            unset($thisfile1);
                            unset($thisfile3);
                            unset($reffile1);
                            unset($reffile3);
                            unset($data0);
                            unset($data1);
                            unset($data3);
                            unset($data33);
                            unset($fp0);
                            unset($fp1);
                            unset($fp3);
                            unset($aa0);
                            unset($aa00);
                            unset($aa1);
                            unset($aa11);
                            unset($aa3);
                            unset($aa33);
                            unset($atest0);
                            unset($atest1);
                            unset($atest3);
                            unset($con);
                            unset($con0);
                            unset($con1);
                            unset($con3);
                            unset($data);
                            unset($host0);
                            unset($host1);
                            unset($host3);
                            unset($res1);
                            unset($res3);
                            unset($path0);
                            unset($path1);
                            unset($path3);
                            unset($inhalt0);
                            unset($resstr);
                            unset($str1); 
                          edit: hab mal noch php-tags hinzugefügt.
                          was ist denn los, tstoffregen, hat's dir die sprache verschlagen?
                          Zuletzt geändert von 3DMax; 07.12.2006, 16:23.

                          Kommentar


                          • #58
                            :-) Etwas.

                            Von Wurzel das Script hab ich gesehen und finde zur Zeit noch keine Möglichkeit etwas dagegen zu tun.

                            LG

                            Thomas
                            --
                            0208/9939318

                            Kommentar


                            • #59
                              Original geschrieben von tstoffregen
                              :-) Etwas.

                              wie gesagt, ich habe diesmal überhaupt nichts mit php geparst - einfach das letzte http-paket von deinem server gesnifft - thats all.

                              gut, du könntest das jetzt auch wiederum "verschleiern" aber deine dynamischen variablen und zeitbegrenzungen der vorherigen x-ebenen greifen überhaupt nicht mehr.
                              es wird sozusagen alles auf eine ebene heruntergebrochen und man hat dann alle zeit der welt, diese zu analysieren.

                              Kommentar


                              • #60
                                Das ist richtig. die Verschleierung, Dynamisierung und die dynamischen Variablen/Funktionsnamen muessen noch auf alle Ebenen durchgezogen werden.

                                Für das Problem mit Wurzels Script, habe ich schon eine Lösung. :-)

                                Das dürfte so jetzt nicht mehr klappen.

                                Bzw: meine Erweiterung des Steps muss auch nochmal verschleiert werden.

                                Aber das Du das Script nur mit einem Sniffer herausbekommen hast, ist mir ein Rätsel da der Transfer base64_decodiert passiert. Aber auch da gibt es Abhilfe. :-)

                                Dafür ist die Testphase ja da.

                                LG

                                Thomas.
                                --
                                0208/9939318

                                Kommentar

                                Lädt...
                                X