Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Software lizensieren (https://www.delphipraxis.net/152757-software-lizensieren.html)

Moony 5. Jul 2010 14:52

Software lizensieren
 
Hallo zusammen,

habe mal eine Frage zum Lizensieren der eigenen Software: Wo in der Registry verankert man am Besten seine Software und wie, so dass diese auch nach dem Wiederinstallieren weiss, dass die Lizenz ggf. abgelaufen ist? Ich hatte die Überlegung unter CLASSES_ROOT\AppID diese zu hinterlegen, habe aber auch gehört dass man da nicht so einfach etwas reinschreiben sollte.

Man kann es mit Sicherheit nicht vollständig gegen Manipulation schützen, aber ich will es dem Anwender schwieriger machen daran zu kommen.

Hoffe ihr könnt mir ein paar Tipps geben wie man sowas am besten durchführt.

Danke & Gruß, Moony

mkinzler 5. Jul 2010 14:56

AW: Software lizensieren
 
Schau dir mal fertige Lösungen wie IceLicence oder AVLock an

blackfin 5. Jul 2010 15:01

AW: Software lizensieren
 
Über einen "versteckten" Registry-Key die Software zu schützen, halte ich für einen ziemlichen "Käse" :)
Es gibt diverse Tools, mit denen man einen Prozess beobachten kann und damit nachsehen kann, auf welche Keys eine Software zugreift.
(Und dann den Schlüssel löschen :))

Wenn du sicher prüfen willst, ob eine Lizenz abgelaufen ist, läuft das eigentlich nur über eine Online-Aktivierung, bei der du serverseitig die Lizenz des Kunden prüfst und ggf freischaltest.
Dabei musst du allerdings, wenns ein Kopierschutz sein soll, ein paar Maschinendaten des Kunden übermitteln (Seriennummer der CPU z.B., die kannst du auch hashen, um keine "persönlichen" Daten direkt zu übermitteln) und daraus dann serverseitig einen Key zum Freischalten generieren, der auf einer anderen Maschine nicht läuft.

Moony 5. Jul 2010 15:29

AW: Software lizensieren
 
  • Online fällt weg, da nicht immer ein Onlinezugang existiert.
  • fertige Lösungen habe ich mir schon zum Teil angeschaut, aber mir fehlt die Zeit das im Moment komplett umzubauen und an diese Lösungen anzupassen
  • im Moment habe ich ja ein Registrierverfahren in der Software ich will nur noch eine Funktion der Testlizenz einbinden. Z.B. 30 Tage gültig ab Registrierung. -> Deshalb war die Frage wo man das am besten hinterlegen kann. Es war nie davon die Rede, dass ich den Schlüssel dort hinterlege, sondern lediglich eine Information für die Software, dass hier eine Testlizenz installiert wurde.

mkinzler 5. Jul 2010 15:43

AW: Software lizensieren
 
Wenn man den Key dann löscht, ist die Info über den Testzetraum auch weg ( weitere 30 Tage)

himitsu 5. Jul 2010 15:59

AW: Software lizensieren
 
Wie sicher willst du es denn haben?
(also wie leicht/schwer soll es denn umgehbar sein)

Eventuell wäre aber ein anderer Weg besser.
Im Endeffekt läßt sich alles früher oder später umgehen.
Da wäre es wohl besser die Testversion in ihrem Umfang und nicht in der Zeit zu Beschränken.
- einige Funkionen fehlen oder sind nur in einem gewissen Umfang nutzbar


PS: falls irgendwo sowas wie
Delphi-Quellcode:
if registrierteVersion or (Now < 123456) then lasse_es_zu
steht, dann reicht eine Änderung von nur einem Byte nötig, es entsteht
Delphi-Quellcode:
if not registrierteVersion or
und schon ist es ohne Lizenz freigeschaltet.

PSS: was nützt ein Datum, wenn man doch die Uhr verstellen kann.
- sei es bei der Installation ein zukünftiges Datum einstellen
- oder wärend der Nutzung ein verganges Datum verwenden

und dann gibt es noch der Fall der VMs und Sandboxen, welche deine versteckten Daten leicht unbrauchbar machen.

Mschmidt 5. Jul 2010 16:25

AW: Software lizensieren
 
alternative Datenströme? Funze aber nur auf NTFS.
speichere deine Lizenzdaten unter meinPgr.exe:lizenz
:-mschmidt

himitsu 5. Jul 2010 16:42

AW: Software lizensieren
 
Kennst du unseren DP-eigenen ADS-Scanner (oder sollte man ihn lieber ADS-Remover nennen :stupid: ? )

Wie schon gesagt wurde, es gibt viele Wege etwas zu verstecken,
aber auch alle lassen sich "leicht" ausfindig machen und ändern/löschen.

Wobei der ADS eigentlich ein schöner Ort ist, damit nach einer Installation nix zurückbleibt (leider wird man ja heutzutage von fast jeder Software zugemüllt, da sie meißt irgendwas zurücklassen)
PS: Beim Deinstallieren der Anwendung ist dann auch der an eine der nun deinstallierten Dateien angehängte ADS weg. :zwinker:

blackfin 5. Jul 2010 17:11

AW: Software lizensieren
 
Wenn du es ganz simpel haben willst, dann leg doch für deine "Lizenz-Informationen" einen Key in
HKCU\Software\ an, eventuell eben einen zusätzlichen zweiten zu deinen "normalen" Programm-Keys mit einem ganz anderen Namen.

Das ist zwar jetzt nicht die feinste englische Art und ein guter Schutz ist es auch keineswegs, aber eine simple Art und Weise.
Andere Root-Keys würde ich nicht nehmen, Software-Settings gehören in HKCU\Software und nicht irgendwo anders hin, wo sie das User-System vermüllen :)

Mschmidt 5. Jul 2010 17:22

AW: Software lizensieren
 
Zitat:

Zitat von himitsu (Beitrag 1033637)
Kennst du unseren DP-eigenen ADS-Scanner (oder sollte man ihn lieber ADS-Remover nennen :stupid: ? )

Wie schon gesagt wurde, es gibt viele Wege etwas zu verstecken,
aber auch alle lassen sich "leicht" ausfindig machen und ändern/löschen.

Wobei der ADS eigentlich ein schöner Ort ist, damit nach einer Installation nix zurückbleibt (leider wird man ja heutzutage von fast jeder Software zugemüllt, da sie meißt irgendwas zurücklassen)
PS: Beim Deinstallieren der Anwendung ist dann auch der an eine der nun deinstallierten Dateien angehängte ADS weg. :zwinker:

ohne jetzt eine Diskusion über Sinn- oder Unsinn zu entfachen, dann nehme man eine poplige Datei aus dem Windows-Verzeichnis, z.b.
die hosts. datei. Ansonsten beim Technik-Krauter um die Ecke ein dutzend USB-Dongles ordern :-).
:-mschmidt

RWarnecke 5. Jul 2010 18:38

AW: Software lizensieren
 
Zitat:

Zitat von mkinzler (Beitrag 1033619)
Schau dir mal fertige Lösungen wie IceLicence oder AVLock an

Eine kurze Zwischenfrage, kann ich über AVLock auch eine Volumenlizenz realiseren ? Habe keinerlei Hinweise auf der Website gefunden.

mkinzler 5. Jul 2010 18:43

AW: Software lizensieren
 
Ja im OLM kann man festlegen, wieviele Lizenzen vergeben werden
http://valega.com/olm30/s3cpanel.php

Hobby-Programmierer 6. Jul 2010 07:49

AW: Software lizensieren
 
Moin ...,
oder aber einfach bei ner Vollversion eine Datei in AppData, zb. MeineSoftware.lic, erzeugen. Von mir aus schreib da einfach binären Schrott rein!
Wenn diese Datei vorhanden ist, ist es ne Vollversion, sonst Testversion. Vorteil wäre wenn jemand die Testversion deinstalliert verbleibt nix unnützes in der Reg oder auf dem PC.

Gruss Mario

Moony 6. Jul 2010 07:54

AW: Software lizensieren
 
Da haben sich ja einige Antworten über Nacht angesammelt.... :)

Dass ein Softwareschutz früher oder später übergangen werden kann ist mir klar. Ich möchte lediglich dem User es ein wenig schwieriger machen dass er diesen übergeht.

Wie gesagt habe ich im moment einen Lizenzschutz, der gibt einzelne Funktionen in der Software mit Hilfe eines Keys frei. Was Funktionen für eine Testlizenz betrifft, möchte ich das nicht einschränken, denn der Benutzer soll schon die Software in vollem Umfang testen können. Deshalb eine Funktion der Testlizenz. Diese soll ab Registrierung für Zeit X nutzbar sein.

@Mario: die Idee mit der Datei ist simpel, aber dann habe ich keinerlei Zeiteinschränkung für die Testlizenz.

olaf 6. Jul 2010 08:28

AW: Software lizensieren
 
Hallo,

habe mich auch mal eine Zeit lang mit Softwareschutz beschäftigt. Der einzige fast sichere Schutz sind Dongles, die sind jeder Softwarelösung überlegen.

Wibu setzt sogar Preisgelder für Cracker aus. Bezahlbar und gut ist Matrix.

Olaf

Sherlock 6. Jul 2010 08:43

AW: Software lizensieren
 
Würdest Du die Zeit und Energie in die Qualität Deiner Software investieren, statt in ihren Schutz, würden Deine Kunden gerne Geld dafür ausgeben. Ausserdem wäre sie auch ein Stück günstiger, weil eben nicht Zeit für Nutzergängelung draufgegangen ist. Was hast Du denn für Raubmordvergewaltigungskopierer als Kunden? Ist es eher ein eingeschränkter Kreis? Oder hast Du die Software erschaffen, die für alle Menschen auf der ganzen Welt von Bedeutung ist?

So, das musste - wie immer in solchen Threads - mal gesagt werden.

Zum ernsteren Teil des Themas: Ich würde immer Dateien verwenden, wie von Mario vorgeschlagen. Statt digitalem Schrott kannst Du ja einen (Test-)Zeitraum dort reincodieren (wie viel Aufwand Dir dafür vertretbar scheint richtet sich ganz nach Deiner Kundschaft von ROT13 bis 3DES ist sicher alles drin...und schlußendlich auch alles knackbar).


Sherlock

IBExpert 6. Jul 2010 09:59

AW: Software lizensieren
 
Moin,

ob die dongle dinger immer so der weisheit letzter schluss ist lass ich mal im Raume stehen, unserer Versuche IBExpert mit verschiedenen bezahlbaren Donglesystemen zu schützen haben wir nach arbeitsintensiver Evaluierung von 2 Produkten aufgegeben. Was mich am meisten genervt hat waren Probleme zum Beispiel mit Win64 Version (Matrix hatte die Funktionsfähigkeit angekündigt, aber auch 5 Monate nach Win7 64 gab es keine damit funktionierende Version) und ebenfalls das die Dongle nicht mal zum Speichern unserer Software geeignet sind. Ein Einkaufspreis von 15-25 Euro pro Dongle war auch nicht ohne finde ich. Die meisten Dongle haben gerade mal 64k Speicher an Board.

Ich weiss das es auch andere Lösungen von anderen Herstellern gibt, aber wie viele in diesem Forum war auch ich nur kurze Zeit genervt und hab mich dann an das gute alte Motto der Sendung "Zugeschaut und mitgebaut" gehalten (die Sendung gab es zwischen 1974 und 1979 wirklich, sehr kultig ...): Einfach mal anschauen was andere da so machen und dann selbst bauen.

Wir haben dann einfach mal versucht, eindeutige IDs aus einem handelsüblichen USB Stick auszulesen. Diese darf man nicht mit der Volume Seriennummer verwechseln, weil man die mit simplen tools von sysinternals.com selbst überschreiben kann. Die physikalischen Seriennummern sind wesentlich länger. Wir habe uns dann auf die blauen verbatim USB Sticks festgelegt, 2GB Version kostet ca 6 Euro, einfach mal 50 Stück bestellt und dann deren Seriennummern ausgelesen. Die Liste der Seriennummern haben wir dann mit verschiedenen Methoden in eine ziemlich verdrehte include Datei gepackt. Diese ist für die Serie hart in IBExpert hineincodiert. Die spezielle USB Version bekommen aber nur zahlende Kunde der USB Version, so das ein Hacker ggf erst mal das Geld ausgeben müsste, um an die binaries zu kommen oder zumindest die dateien von einem zahlenden Kunden bekommen. In der öffentlichen IBExpert Version (Trial, Customer, Personal) ist das ganze per compilerschalter gar nicht drin.

IBExpert läuft in der USB Version nun auch nur auf einem Rechner, bei dem der USB Stick eingesteckt ist und prüft auch regelmäßig ob das noch so ist. Um nun nicht auf Tricks reinzufallen mit usb network shares haben wir dann die usb version so festgelegt, das diese eine Lockdatei auf dem Stick schreibt und diese öffnen hält. Das können nun mal nicht zwei Prozesse gleichzeit, so das auch zum Beispiel auf einem Terminalserver die USB Version nur ein mal laufen würde.

Mit neuen Versionen ergänzen wir einfach die include datei durch ggf weitere USB Seriennummern und können anhang unserer Kundendatenbank zum Beispiel auch abgelaufene Lizenznummer für neuere Versionen entfernen.

Wenn deine Software durchaus interessant für Hacker ist, dann kannst du auch mal einen Blick auf themida von oreans.com werfen, damit kann man durchschnittlichen hackern das Leben schon erheblich erschweren, wir nutzen das seit einigen Wochen. Den Tip dazu hatten wir uns aufgrund von Diskussionen in russischen Hacker newsgroups, in denen man sich durchaus negativ über themida geäußert hat, negativ im Sinne von nicht einfach knackbar.

Was man immer wissen sollte: Jedes Standard Produkt zum Softwareschutz hat früher oder später in entsprechenden Foren ein Crack mit dem sich fast alle damit geschützten Programme knacken lassen. Wenn Ihr ein eigenes Verfahren habt muss sich jemand erst mal mit genau eurer Software auseinandersetzen, um das zu knacken. Ab einer gewissen Präsenz wird das durchaus passieren, irgendwie ist man auch stolz drauf wenn man den ersten Crack zu eigenen Software findet. Wenn das dann aber Ausmaße annimmt, die man so nicht mehr tolerieren will, dann muss man Gegenmaßnahmen ergreifen.

Zum Zitat "Würdest Du die Zeit und Energie in die Qualität Deiner Software investieren, statt in ihren Schutz, würden Deine Kunden gerne Geld dafür ausgeben" sage ich nur, das wir aktuell Benutzer unserer kostenlosen Personal Edition in 170 Ländern haben und Kunden, die für die Vollversion bezahlt haben, in 85 ländern. Trotzdem gibt es Länder, zum Beispiel Brasilien, in denen wir aufgrund weitergehender Mechanismen in IBExpert die größte Verbreitung von gecrackten IBExpert Versionen sehen. Seit wir themida einsetzen gab es bisher noch keine neue gecrackte Version. Brasilien ist mit 40% aller Zugriffe auf unseren Webserver absolut führend, Firebird und IBExpert sind in dem Land weit verbreitet und wir verkaufen auch diverse Lizenzen nach Brasilien. Trotzdem ist dort die Hemmschwelle zum Einsatz geknackter Versionen relativ gering. Wenn wir durch derartige Mechanismen nur 10% aller User einer geknackten Version so ärgern können, das er dann zu Sonderpreis eine Vollversion kauft, dann ist das ein erheblicher Mehrumsatz, den wir uns ungern entgehen lassen wollen.

Wir haben übrigens sehr viele treue Kunden, die bereits seit Jahren stets alle Updatezyklen kostenpflichtig mitgemacht haben, daher ist auch durchaus die Qualität unserer Software den Kunden wohl bewusst.

Für die NON-USB Version ist Umstellung auf Keys, die man selbst online generieren kann, aber auch geplant. Aber nicht so wie Microsoft Windows, wo man am Telefon endlose zahlenkollonnen eintippen muss und am Ende eine endlose Zahlenkolonnen wieder vorgelesen bekommt. Wir planen einen computerspezifischen 8 stelligen Code, zu dem man online in Verbindung mit der eigenen Kundennummer einen 8 stelligen Freischaltcode bekommt. Das geht dann auch per Telefon innerhalb von weniger als einer Minute, wenn man zum Beispiel nicht online ist.

mkinzler 6. Jul 2010 10:04

AW: Software lizensieren
 
Den Weg über USB-Sticks verfolgt auch diese Lösung

blackfin 6. Jul 2010 10:13

AW: Software lizensieren
 
Darf man vielleicht erst einmal erfahren, um was für eine Art Software es sich überhaupt handelt, bevor man hier ein Dongle-Inferno auffährt? :)

Moony 6. Jul 2010 10:19

AW: Software lizensieren
 
Mein Problem ist nicht die eigentliche Lizensierung, die steht in der Software und läuft auch gut. Ich möchte lediglich die Lizensierung um einen Testlizenzmodus erweitern und so war auch die Frage, wo man die Informationen am besten ablegt, so dass diese auch nach Deinstallation abrufbar sind.

Dass jeder Schutz irgendwann mal umgangen wird ist mir klar. Und was die Kunden machen kann ich nicht überwachen, aber ich kann ihnen das Leben ein bisschen schwieriger machen.

Aber hier geht es um einen Prozess der Testlizenz die keine Einschränkung auf Funktionalität der Software in der Testphase durchführt und nach Deinstallation oder MAnipulation des Datum weiterhin präsent und abrufbar ist.

blackfin 6. Jul 2010 11:37

AW: Software lizensieren
 
Ich würde dafür, wie es auch schon vorgeschlagen wurde, eine Datei nehmen, in der folgende Dinge verschlüsselt abgelegt sind:

1) Installationsdatum
2) Tage, in denen das Programm laufen darf
3) Zeit des letzten Zugriffs / Programmstarts

Durch Punkt 3 kannst du zumindest mal die einfache Datums-Manipulation ausschliessen, indem du einfach prüfst, ob die zeit des letzten Zugriffs grösser ist als das derzeitige Datum. (dann hat jemand die Uhr zurückgestellt). Allerdings brauchst du da noch ein paar Thresholds, um Sommer- / Winterzeitumstellung damit abzufangen und keine false positives zu erzeugen.

Um eine Neuinstallation zu verhindern und ohne eine Online-Aktivierungsmöglichkeit musst du (leider) die Datei im System lassen und bei der Deinstallation nicht löschen. Keine schöne Sache an sich.
Als Alternative wäre vielleicht noch, dass ein Kunde für die Trial-Lizenz auch eine Lizenz-Nummer braucht, die per Server-Script generiert wird und dem Kunden per Email geschickt wird.
In diese Lizenznummer ist eine Zeitbeschränkung der Installation eincodiert (man kann das Programm mit der Nummer nur innerhalb 30 Tage ab Generierung der Lizenznummer installieren).
Allerdings würde das dann eine Email-Registrierung beim Download voraussetzen.

Sherlock 6. Jul 2010 13:22

AW: Software lizensieren
 
Zitat:

Zitat von Moony (Beitrag 1033750)
Und was die Kunden machen kann ich nicht überwachen, aber ich kann ihnen das Leben ein bisschen schwieriger machen.

OK, ist aus dem Zusammenhang gerissen, aber es lässt tief blicken ;)


Sherlock

Moony 6. Jul 2010 14:33

AW: Software lizensieren
 
@blackfin: danke, ich werde schauen welche der beiden Möglichkeiten ich in Betracht ziehen kann.

Vielen Dank an alle anderen für die regen Antworten...

Gruß, Moony

Coder 6. Jul 2010 16:28

AW: Software lizensieren
 
Zitat:

Zitat von Sherlock (Beitrag 1033779)
Zitat:

Zitat von Moony (Beitrag 1033750)
Zitat:

Zitat von Moony:
Und was die Kunden machen kann ich nicht überwachen, aber ich kann ihnen das Leben ein bisschen schwieriger machen.
Und was die Kunden machen kann ich nicht überwachen, aber ich kann ihnen das Leben ein bisschen schwieriger machen.

OK, ist aus dem Zusammenhang gerissen, aber es lässt tief blicken ;)


Sherlock

naja, die User wollen das doch auch so ...

die Kiddiez und DownloadFreakz lechzen doch danach, möglichst immer neueste Software auf ihrem Rechner zu installieren, der ihnen wild im System umschreibt und das vor allem an den empfindlichsten Stellen ...
Da wo eigentlich normale Programme niemals hinschreiben sollten (System-destabilisierend)
Aber die Fängemeinde wächst täglich.


Also zum Problem..
Schreib in die Registry in HKM\Software\Progrname und HCU\Progrname und CLSID oder in \Anwendungsdaten\Progname verschiedene Werte und frag die ab.
Bei Manipulationen gib Meldung, daß Du sie entdeckt hast.
Vor allem weise dann immer wieder daraufhin, daß sie so ehrlich sein und kaufen sollen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz