Kopierschutzidee



  • Hi,

    ich bin auf der Suche nach einem, sicheren und komfortablen Kopierschutzmechanismus für meine Programme und habe mir diesbezüglich schon ein paar Gedanken gemacht.

    Ziel ist es, dass nur ein Benutzer, sein freigeschaltetes Programm benutzen darf und zwar PC-unabhängig und der Kopierschutz soll auch nichts in die Windows Registry schreiben, wie es mein momentaner Kopierschutz macht (der natürlich versagt, wenn der Benutzer gerne mal formatieren möchte).

    Ich habe mir gedacht eine Art Online-Authentifizierung zu machen. Nur habe ich leider überhaupt keine Ahnung, welche Schnittstelle ich für den Internet-Teil nutzen soll. Ich dachte zuerst an ein PHP-Script mit MySQL Datenbank um die Benutzerdaten abzugleichen. Ich benutze den Borland C++ Builder 6 Professional, ist es umständlich dann damit auf irgendwelche PHP-Scripte zuzugreifen oder geh ich komplett falsch an die Sache ran?

    - Der Benutzer bekommt ein Passwort, was ebenfalls als (verschlüsseltes) Gegenstück in einer Datenbank (MySQL) im Internet liegt.
    - Wenn der Benutzer das Programm nutzen möchte, muss er natürlich sein Passwort eingeben, welches mit den Datenbank-Daten abgeglichen wird.
    - Wenn die Daten gültig sind, darf der Benutzer mit dem Programm arbeiten und es wird in der Datenbank eine Flag gesetzt, dass der Benutzer grade mit dem Programm online ist (soll Mehrfachnutzung des Programms unterbinden)
    - Wenn der Benutzer das Programm wieder beendet, sollte die Flag wieder auf null gesetzt werden, damit er beim nächsten Benutzung nicht des Status erhält, dass das Programm bereits benutzt wird.

    ---> Hier tauchen schon Probleme auf: Wenn das Programm nicht richtig beendet wird oder die Internet-Verbindung getrennt wird, kann das Programm diese Flag nicht zurücksetzen und der Benutzer hat für immer den "Eingeloggt"-Status obwohl er in Wirklichkeit gar nicht eingeloggt ist.

    Eine Lösung wäre, dass das Programm in bestimmten Intervallen (z.B. einmal pro Minute) ein Lebenszeichen an das Script sendet. Sollte nach einiger Zeit kein Lebenszeichen mehr kommen, sollte das Script den Status wieder auf "ausgeloggt" stellen damit sich der Benutzer nicht selbst aussperrt.

    Das ist soweit meine Idee, die natürlich nicht wirklich neu ist.

    ------------

    Die Theorie habe ich jetzt zurechgesponnen, jetzt kommt es zur Umsetzung...

    - Die große Frage für mich ist erstmal, welche Internet-Schnittstelle sollte ich am besten benutzen, wenn ich Der Borland C++ Builder 6 Professional benutze?

    - Wie soll ich das mit dem Passwortvergleich anstellen? Sollte ich dem Benutzer ein Passwort generieren, welches er in das Programm eingibt und das Programm wiederum es in einen MD5-Hash umwandelt und mit den Passwörtern in der Datenbank abgleicht, die ebenfalls als MD5-Hashes vorliegen?

    Ich bin schon gespannt auf Eure Antworten 🙂

    Gruß
    ravel



  • dann kann man das programm ja nur benutzen wenn man zugriff auf's internet hat 😕
    das ist z.b. für modem-benutzer unzumutbar



  • Und was soll das bringen? Ist doch mindestens genauso leicht wie 'ne CD Abfrage zu knacken. Zusätzlich könnte man einfach 'nen Fake Server coden, der einfach immer "Passwort stimmt" zurückliefert.

    Bye, TGGC (Ein Jahr Helden)



  • Und die ganzen Firewalls und Proxys nicht vergessen 😃



  • also ein schutz gegen cracker ist das nicht. die abfrage kann man doch einfach im disassembler überspringen lassen.



  • du müßtest auf dem server also ein wenig logic ausführen lassen oder zumindest downloaden lassen (z.b. ein script dass du in deinem programm dann interpretierst). das ganze müßtest du aber natürlich gut verschlüsseln, damit eben kein fakeserver möglich ist.

    modemnutzen sind dann aber wie schon gesagt, total am arsh, wenn man dein programm jedoch nur online kaufen kann, wäre das nicht soooo schlimm.

    rapso->greets();



  • Ich sehe momentan folgende Klippen die mir grade ins Auge stechen:

    • Nutzung des Programms ist offline nicht mehr möglich. - Für mich als "Während der Reise arbeitender" schlicht unbrauchbar
    • Mehrfachnutzung des Programms auf dem selben rechner nicht mehr möglich
    • Was ist mit der Benutzung des bezahlten Programms auf mehreren Rechnern die alle mir gehören?
    • Zwingend erforderliche I-Net-Verbindung! (was ist mit jmd. der keinen Internet-Zugriff hat?


  • das gibt es schon, es nennt sich steam und kommt bei den kunden nur bedingt gut an. 😃



  • junix schrieb:

    Ich sehe momentan folgende Klippen die mir grade ins Auge stechen:

    • Nutzung des Programms ist offline nicht mehr möglich. - Für mich als "Während der Reise arbeitender" schlicht unbrauchbar
    • Mehrfachnutzung des Programms auf dem selben rechner nicht mehr möglich
    • Was ist mit der Benutzung des bezahlten Programms auf mehreren Rechnern die alle mir gehören?
    • Zwingend erforderliche I-Net-Verbindung! (was ist mit jmd. der keinen Internet-Zugriff hat?

    Und es gibt noch ein Problem.

    Ich würde so eine Software nie kaufen. 😃

    @ Threadersteller

    Kümmer dich mal um deine Kunden und schiebe ihnen keinen Müll unter,
    dann mußt du dir auch keine Sorgen um deinen Gewinn machen.



  • Hi,

    erstmal danke für Eure Antworten, besonders die Kritik ist angebracht.
    Etwas wichtiges habe ich wohl nicht erwähnt: Das Programm selbst arbeitet im Internet also fallen die ganzen Argumente weg, die auf die notwendige Internetverbindung eingehen.

    Außerdem ist es mir momentan (noch) nicht so wichtig, wie sicher dieses Verfahren ist und wie es möglicherweise umgangen werden kann. - Auch wenn die Aspekte für später natürlich recht Interessant und beachtenswert sind.

    Mir geht es jetzt in erster Linie um die Umsetzung. Ich habe, wie schon mehrmals erwähnt noch nie ein Programm geschrieben, welches auf eine Internetdatenbank oder ein Script zugreift und frage mich ob dies überhaupt der richtige Ansatz ist.

    Was empfehlt ihr mir als geeignete Internet-Schnittstelle für dieses Programm? - Muss es wirklich ein PHP-Script sein, welches auf eine MySQL-Datenbank zugreift? - Das war lediglich mein erster Gedanke. Der Gedanke eines Anfängers auf dem Gebiet 😛

    Gruß
    ravel



  • mit php mußt du nicht zwingend auf dein mysql datenbank zugreifen, du kannst dir auch dateien ablegen (der syntax dafür ist c sehr änlich). dort könntest du in dateien abspeichern wer zugriff hat auf das programm. das wäre ziemlich einfach.

    alternativ könntest du dir ein cgi schreiben. cgi sind "consolenprogramme" die ein server ausführen kann. dabei kannst du abfragen, welche url requestet wurde und mit simplem "printf(...);" daten zurück an den client schicken (fürs testen könntest du das mit einem normalen browser machen und später kannst du das ja mit deinen programmen abfragen).

    naja, das zum brainstorming 🙂

    rapso->greets();



  • Hi

    Ich füge mal was dazu was mir grad mal so einfällt:
    1.)Wieso willst Du das ganze über http laufen lassen?
    (du sprichst doch von php und so)
    Es wär doch viel besser das als seperaten tcp dienst laufen zu lassen.
    2.)Da sich der c++ Builder an delpi anlehnt (kenn ich) kann ich dir sagen,
    das es dort schon vorgefertigte komponenten gibt die auf sql zugreifen.
    Schau dir diese mal näher an.
    3.)Ne Idee zu Fakeservern: Auf dem echten Server können in einer Datenbank bereits
    Schlüssel vorliegen, welche bei einer erstanmeldung der Software, an das Prog
    gesendet werden. Diese werden mit einem Schlüssel kombiniert, welcher man beim
    Softwarekauf bekamm. Über dies läuft dann der weiterer Verkehr.
    4.)Schutz gegen man in the midle: AuthorisationsVerkehr Tunneln.

    Gruss 🙂



  • Hi,

    die letzten beiden Antworten haben mir sehr gefallen. Ich werde mir jetzt erstmal selbst weitere Gedanken dazu machen wie ich die Idee jetzt umsetze.

    Gruß
    ravel



  • keine ahnung maybe hilft dir

    SOAP ober https weiter, damit kannst du netzwerunabhängig kommunizieren zw. dem client und dem Server.

    Wie gesagt, erst wenn auf dem Server was berechnet wird, dann wäre es sicherer, kommt drauf an was und wie.

    was ich nicht verstanden habe

    Wie dir schon zig fach gesagt worden ist, wenn du nicht wichtige sachen auf dem server berechnest, z.b. eingaben vom user werden bei dir verarbeitet und das ergebnis bekommt der user zurück, solange kann das ganze system nicht funktionieren.

    FAZIT: OK es mag ja bis jetzt dir nicht so wichtig sein, aber warum machst du es dann, wenn es sowieso zum scheitern verurteilt ist!
    Check ich nicht. Willst du einfach dir das Leben selber schwerer machen? Oder einfach mal Datenübertragungen ausprobieren? Wenn ja, dann code das nicht in ein fertiges Programm rein 🙄 DENN je mehr code of lines, je mehr fehler. ausserdem sind die kosten dann auch hoch fuer dich UND den Kunden

    da

    1. unnötiger Traffic ständig verursacht wird
    2. Was ist, wenn der server ausfällt
    3. gegen "raub"kopierer nutzt es eh nichts
    4. der kunde ne weitere sicherheitslücke hat, in dem sein rechner angegriffen wird
    5. es gegen raubkopierer nicht nutzt

    Wenn du echt auf dem server die sachen ausrechnene lässt, dann viel spass. Kann sehr teurer werden, wenn du die Software zig mal verkaufst ( z.b. 1 million male )

    Wie gesagt, maybe hilft dir SOAP over https weiter.



  • bist du ja eh der beste

    was soll das sein mit dem Fair-traffic?
    Was kann man sich fuer die traffics kaufen?

    Naja was mich aufregt

    2. Was ist denn überhaupt ein "Credit"?
    Ein Credit ist ein Besucher.

    lol aber dann schreiben

    8. Was bedeutet "Ratio"?
    Ratio, z.B. 1:5-Ratio bedeutet, dass Sie für 5 Besucher 1 Credit bekommen. Wir bieten Ihnen natürlich eine faire
    Ratio von 7:9.

    👎

    lol warum nicht einfach 1:1 das wäre fair

    was soll das eigentlich alles bringen? mehr popups auf der welt?

    hmm mach einfach ne site mit dem namen

    fair-spam 👍

    mit einem ratio von 1:1
    jeder spam den sie verursachen bringt ihnen ein credit.



  • newkid schrieb:

    3. gegen "raub"kopierer nutzt es eh nichts

    Naja gegen die hilft so gut wie gar nichts 😉

    Doch ein schlechter Kopierschutz ist immer noch besser als ga kein!
    (Es sei den er Verursacht extreme zusätzliche Kosten)

    Gründe:
    1.)Nicht jeder ist ein cracker und die meisten wissen nicht mal wie
    der besagte Kopierschutz funktioniert.
    2.)Natürlich reicht es aus, wenn nur einer eine Methode rausfindet
    wie es zu umgehen ist und diese dan veröffentlicht. Doch die meisten
    sind eh nicht "ausgebildet" genug um es trotz der bekannten Methode zu schaffen.
    3.)Kopierschutz soll vor der Masse schützen nicht von jedem Einzellnen.

    4.)Kopierschutz ist Kopierschutz: Laut deutschen Gestz ist diesen zu Umgehen
    Verboten. Also ist man im Zweifellsfall (vor Gericht) auf der sicheren Seite. 😃

    Gruss 🙂



  • Nimm auf jeden Fall normales http, wenn Du so etwas vor hast. Wenn Du einen eigenen TCP/IP-Dienst oder irgendetwas bestehendes verwendest, hast Du das Problem, daß Proxy evtl. ein unüberwindbares Hinderniss für Dich sind.



  • Hi,

    relativ leicht fährt man wirlich mit der Idee einfach Verzeichnisse auf dem Server anzulegen.
    Bsp.:
    \pfad\login-name\passwort\ (wobei man sich einen login-namen auch sparen könnte)

    Dann generiere ich dem Benutzer ein Passwort (oder er sucht sich selbst eines aus), welches er ins Programm eingibt. Das Programm schaut dann nach ob diese Verzeichnisse existieren. Falls nein --> abbruch, falls ja --> weiter gehts - OnlineFlag wird in einer Textdatei im Verzeichnis \passwort\ beim Start des Programms auf true gesetzt. Jetzt sendet das Programm alle paar Sekunden ein Lebenszeichen an das Script. Sollte kein Lebenszeichen mehr kommen, setzt das Programm die OnlineFlag wieder auf false, genau so, wenn das Programm ordnunggemäß beendet wurde.

    Ich denke, so werde ich es umsetzen.

    Wo liegen jetzt die Schwächen bei dieser Lösung? - Ich habe etwas von einem Fake-Server gelesen. Wie kann man sich sowas vorstellen und wie setzt man sowas um?
    Bitte zählt jetzt die Arguemente auf, dass man mit einem Disassembler die Prüfungsfunktionen einfach "aushebelt", sowas kann man bei (fast) jedem Programm, dagegen bin ich auch nicht sicher.

    @loley: Wenn Du keine Ahnung von dem Gebiet hast, kannst Du Dir Deinen unqualifizierten Müll sparen. Ansonsten steht auf meiner tollen Website eine eMail-Adresse über die Du mich erreichen kannst.

    Gruß
    ravel


Anmelden zum Antworten