kopierschutz für programme



  • hallo leute,

    will im bcb 6 prof einen kleinen programmierschutz machen.
    folgende überlegung hab ich mir hierzu gemacht:
    Eine datei wird von einem webserver geladen (muss natürlich ich zuerst auf den apache laden - da das programm nicht soviele haben werden, sollte das kein problem sein ... wenn die datei also nicht vorhanden ist, hat der benutzer keine chance ... dann soll der inhalt dieser datei in die registry geschrieben werden.
    soweit so gut.
    Doch gibt es irgendeine möglichkeit, dass man den wert, der in die registry eingetragen wird, nicht sehen kann - sonst kann der benutzer ja ebenfalls den gleichen schlüssel eintragen.
    kann sein, dass ich hier auf dem holzweg bin - sollte es so sein, würde ich euch bitten, mir andere vorschläge für einen "relativ sicheren" kopierschutz zu machen.

    vielen dank

    matthi



  • Holzweg!

    Grundsätzlich sollte klar sein: Es gibt nicht den sicheren Kopierschutz.
    Daran haben sich schon viele Konzerne die Zähne ausgebissen. Eine Möglichkeit,
    die trotzdem recht sicher ist: Lade teile deines Programms als externe DLL auf einen Server oder lagere Funktionen in phpSkripte aus, die das ergebnis dann via HTTP an Deine lokale Anwendung zurückliefern.



  • ² graumarl.

    ich habe ja geschrieben "einen relativ sicheren".
    auf einen server teile des programmes zu laden, kommt für mich nicht in frage ... aus einem ganz einfachem grund: wenn dem kunden einmal internet ausfällt, hat er keine möglichkeit mehr, das programm zu benutzen.

    lg matthi



  • Da Du Kunde sagst geh ich mal davon aus das soll in Professionellen Einsatz kommen. Da gibt es so ein nettes Spielzeug das schimpft sich Dongel (weiß nicht genau wie das geschriebn wird ^^), das wird an den Rechner angeschlossen und du kannst das von Deiner Software aus ansprechen. Und nur wenn dieses Teil dran ist klappts auch.

    Nachteil ist natürlich das der Kunde immer einen Dongel am Rechner haben muss.



  • ²galeon: thx für deine antwort. klingt gut ...
    jedoch würde es noch nicht sofort zum einsatz kommen.
    gibt es noch andere möglichkeiten, einen schutz zu schreiben?
    vielleicht auch meine möglickeit zu nehmen?

    lg matthi


  • Mod

    Hallo

    habe fuer einen Kunden schonmal soetwas gemacht

    Ablauf ca so.

    - Kunde installiert Programm
    - Programm liest verschiedene Daten des Rechners FP......) und erstellt eine
    Pruefsumme daraus
    - diese Pruefsumme wird an dich zurueckgemeldet
    - du erstellst daraus einen Programmcode
    der wird im Programm eingegeben und gibt alle Funktionen frei

    MfG
    Klaus



  • hmm, auch thx für die antwort.
    wie kann ich aber da sichergehen, dass dieser gleiche programmcode nicht auf 2 pcs läuft?

    lg matthi


  • Mod

    Hallo

    zB verknuepfen Uhrzeit (ms) und Festplatten-ID + ....

    MfG
    Klaus



  • @KlausB:
    Du erstellst aber nur aus Daten des Rechners Daten, das heißt das man das Programm trotzdem auf jedem Rechner installieren und ausführen könnte.
    Du hast ja keinen Vergleichwert ob es sich um die selbe Software handelt.

    eien Möglichkeit wäre da natürlich jeder exe, bzw. jedem Programm einen einmaligen Schlüssel mitzugeben und den abzugleichen.
    Nun besteht zwar immernoch die Möglichkeit das der Kunde das Programm nochmal installieren muss weil er z.B. neue Rechner bekommt, aber Du könntest so z.B. halbwegs sichergehen das ein Program nicht sehr oft vervielfälltigt wird.



  • genau die frage von galeon habe ich mir auch gerade gestellt.
    danke!
    lg matthi


  • Mod

    Hallo

    irgendwie verstehe ich dein Posting nicht so ganz

    das Programm ist logischerweise als Demoprogramm zu starten
    bzw nur als Eingabemoeglichkeit fuer den Code (den du erzeugst)

    Erzeugt wird dieser Code aus Zeitpunkt der Installation + Festplattennummer
    + ....

    Aus diesem Code erzeugst du auf deinem Rechner einen neuen Code (irgendwie verschluesseln)
    dieser Code schaltet das Programm frei

    (Borland und MS machen das ca auch so)

    MfG
    Klaus



  • Also Du erzeugst aus irgendwelchen Daten eine Nummer, mit der Du nun wieder etwas erzeugst das Dein Programm freischaltet.

    Und wo ist nun der Mechanismus der das Programm schützt ?

    Der Trick z.B. bei Microsoft oder dem XBuilder ist ja das Du dich entweder per Telefon oder online registrierst und dort vermerkt wird das Du Dich mit der Software XYZ angemeldet hast. Allerdings hat soweit ich weiß auch jede Software bei denen eine Seriennummer mit der das ganze dann abgeglichen wird. Es würde also z.B. auffallen wenn ein und die selbe Version mehrmals angemeldet wird.

    Deswegen wurden dann ja auch Programme entwickelt die eben z.B. diese Onlineregistrierung bei XP umgehen und einfach sagen "Du bist nun freigeschaltet", oder nicht ?

    Du musst ja irgendwie verhindern das jemand das Programm kopiert und auf 100 weiteren Rechnern installiert.


  • Mod

    Hallo

    @Galeon

    das Programm ist logischerweise als Demoprogramm zu starten
    bzw nur als Eingabemoeglichkeit fuer den Code (den du erzeugst)

    hast du das gelesen 😉

    MfG
    Klaus



  • hab ich, hab ich ^^

    Aber was bringt Dir das ?

    Das Programm ist solange eine Demo bis der aus der Hardware erzeugte Code eingegeben wurde.
    Nun hast Du aber immernoch keine Möglichkeit um zu prüfen ob das Programm vervielfältigt wurde oder nicht ... .

    Ich kann das Programm immernoch auf 20 verschiedenen Rechnern installieren, ermittel auf jedem Rechner eine Prüfsumme der Hardware, lass mir den code erzeugen und aktivere das Programm. Was hindert mich daran oder sagt Dir als Hersteller nun "Guck mal das ist aber nicht normal was der macht." ?


  • Mod

    Hallo

    @Galon

    Aus diesem Code erzeugst du auf deinem Rechner einen neuen Code (irgendwie verschluesseln)
    dieser Code schaltet das Programm frei

    irgenwie verstehe ich nicht was du willst (Probleme mit dem lesen oder so)
    Moeglicherweise schreibe ich etwa undeutlich 😕

    Lies doch bitte mal mein Post wo ich den Ablauf beschreibe

    MfG
    Klaus



  • KlausB schrieb:

    - Kunde installiert Programm

    Ok

    KlausB schrieb:

    - Programm liest verschiedene Daten des Rechners FP......) und erstellt eine
    Pruefsumme daraus

    Ok

    KlausB schrieb:

    - diese Pruefsumme wird an dich zurueckgemeldet

    und das bringt ?
    Nun hab ich eine Prüfsumme die aus der Rechnerhardware erstellt wurde und kann daraus durch irgendwelche Spielereien einen Freischaltcode erzeugen, ich weiß aber nicht ob es das selbe Programm ist das 3 Tage vorher schonmal XYZ registriert hat.

    KlausB schrieb:

    - du erstellst daraus einen Programmcode
    der wird im Programm eingegeben und gibt alle Funktionen frei

    und ich hab eine Vollversion ohne was dafür zu machen.

    Deinem System nach kopier ich mir einach die Software, spiele sie auf meinen Rechner. Der erstellt eine Prüfsumme aus meiner Hardware, gibt sie an Dich weiter, Du sagst "oh toll ein Kunde der sein Programm installieren will" und gibst mir den Code.

    Software kopiert, schaden für Deine Firma.

    Das worauf ich Dich die ganze Zeit hinweise wollte ist das du irgendwas brauchst an dem Du festmachen kannst ob diese eine Software die jemand erhalten hat, vervielfältigt und weitergegeben wurde.

    Du bräuchtest z.B. in jeder Software einen eindeutige Nummer die Du mit einarbeitest und an Dich schickst. Dann er kannst du feststellen "AHA, die Seriennummer hatte sich nun schon 10 mal angemeldet, da stimmt was nicht !".

    Klar, so kann man nur in etwas festmachen wenn eine Software groß weiterverbreitet wurde, jeder installiert sein System mal neu, aber es ist immerhin möglich. 🙂



  • Hi,
    ich schätze er meint das so wie bei Shareware! Geld muss man erst bezahlen wenn man den Code heben will! Also kan n die Software kopiert werden und der Kunde muss für den Code dann trotzdem Geld bezahlen!

    MfG

    Alexander Sulfrian


  • Mod

    Hallo

    dieser Code beinhaltet doch die Install-Zeit und an die Festplattennummer
    Wie soll man diese Software auf einem anderen Rechner als Vollversion laufen lassen koennen.

    Es stimmen da weder die Install-Zeit und auch kann es nicht die gleiche Festplatte sein 😕

    Ich darf hier nicht viel weiter draufeingehen (Programmteil ist geschuetzt)
    aber das Programm laeuft so in Deutschland ca 150-200 mal
    Kosten pro Programm ca 25.000 € da ist es klar das das Programm
    geschuetzt werden muss.

    MfG
    Klasu



  • @Klaus:

    Der Code beinhaltet die Zeit und die Festplattennummer, Du machst nur anhand von Rechnerdaten Deinen Code fest, woran erkennst Du nun ob es sich um eine Software handelt die schonmal installiert wurde oder eine neue ?
    Du brauchst immer einen Schlüssel aus Deiner Software anhand der Du erkennen kannst ob diese schonmal installiet wurde. Woher willst Du sonst bei 200 (wie Du sagstes installationen erkennen welche es ist, Du könntest so nichtmal zwei auseinanderhalten.

    Du müsstest die Programme schon installiert aber noch nicht registriert ausliefern und Dir sind somit schon alle Daten der Hardware bekannt und Du kannst Sie in Deiner Datenbank hinterlegen.

    Es ist nunmal nicht möglich anhand von Dir vorher unbekannten Daten etwas zu generieren aus dem Du Deine Software schützen kannst, wie soll das auch gehen ?
    Du musst ja auch wenn du mehr als einen Kunden hast das ganze auseinanderhalten.

    Ich weiß jetzt nicht in wie weit du Dich mit dem von dir erwähnten System auskennst, aber Du erwähnst immer ein wichtiges Detail nicht das dies ganze erst lauffähig machen würde.

    Ich kann mir mehere Wege vorstellen wie man Deine Idee lauffähig macht, aber nur so wie Du es bisher beschrieben hast geht es nunmal nicht.

    Sehen wir es mal aus der Sicht des Programms das die anfragen auf dem SErver verarbeitet:

    Es kommt ein Code rein den ich als Programm wieder in Festplattennummer, die Uhrzeit der Installation und noch andere Hardwaredetails zerlegen kann, ich habe bereits 100 Kunden in der Datenbank .. woran erkenne ich jetzt ob es sich um eine Installtion eines der bisherigen Kunden handelt oder um eine neu ?
    Ich besitze ja nur Hardwaredaten ...

    Würde sich jetzt in dem Code noch eine Serienummer des Pogramm befinden könnte ich anhand dieser rausfinden ob es schnomal installiert wurde oder nicht.

    anhang:

    KlausB schrieb:

    Es stimmen da weder die Install-Zeit und auch kann es nicht die gleiche Festplatte sein 😕

    Die Installzeit und Festplattennummer stimmen nicht mit welchen anderen überein ?

    Angenommen Du hast 100 Datensätze mit solchen Daten, woran willst Du das nun abgleichen ? Du hast keinen eindeutigen Schlüssel.

    Oder kennst Du, wie auch immer, die Installationszeit und die Festplattennummer vorher ?


  • Mod

    Hallo

    den jeweiligen Kunden kann man doch sehr leicht auseinanderhalten

    Kunde zahlt
    Kunde installiert
    Kunde schickt E-Mail mit Code und (logischerweise Namen)
    Ich schicke dem Kunden seinen Freischaltcode

    Der Name (+Zahlung) ist doch die Grundvoraussetzung fuer alles weitere

    MfG
    Klaus


Anmelden zum Antworten