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
-
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 freiMfG
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
-
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
-
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.
-
Hallo
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." ?
-
Hallo
@Galon
Aus diesem Code erzeugst du auf deinem Rechner einen neuen Code (irgendwie verschluesseln)
dieser Code schaltet das Programm freiirgenwie verstehe ich nicht was du willst (Probleme mit dem lesen oder so)
Moeglicherweise schreibe ich etwa undeutlichLies 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 darausOk
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 freiund 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
-
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
-
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 ?
-
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 FreischaltcodeDer Name (+Zahlung) ist doch die Grundvoraussetzung fuer alles weitere
MfG
Klaus