Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kopierschutz einer Anwendung (https://www.delphipraxis.net/81144-kopierschutz-einer-anwendung.html)

Martin W 21. Nov 2006 14:13


Kopierschutz einer Anwendung
 
Hi;

Ich habe mir ein Kopierschutz / Passwortschutz ausgedacht, welchen ich euch kurz erklären möchte. Bitte nennt mir Schwachstellen und Verbesserungsvorschläge.

Folgendes soll der Schutz können
  • (a) Eine Programmlizenz darf nur einmal verwendet werden
  • (b) Eine Programmlizenz muss einer Firma zugeordnet werden können

Gegenbenheiten
  • Ex existiert ein einmaliger PC Key (Hardware, Windows Produkt ID, etc...) der nicht veränderbar und einmalig ist
  • Jede Firma bekommt eine (!) Seriennummer
  • Jede Firma bekommt einen Installationskey
  • Für jede Lizenz die erstellt wird wir eine einmalige Nummer angelegt

Beispiel: Kunde Müller bestellt 10 Lizenzen unseres Programmes
Also bekommt er von uns:
  • Eine (!) Seriennummer, z.B. Beispiel 001-SER-IEN-N00-000
  • 10 Lizenzdateien

Die Lizenzdateien haben den Inhalt
Zitat:

Lizenzdatei
Seriennummer=001-SER-IEN-N00-000
ClientID=000-000-000-001
HashSum=<<<Prüfsumme der oberen Werte zum Schutz vor Veränderungen>>>
Die CLientID wird je Lizenz vorlaufend hochgezählt, also:

Zitat:

Lizenz 1 :: ClientID=000-000-000-001
Lizenz 2 :: ClientID=000-000-000-002
Lizenz 3 :: ClientID=000-000-000-003
Lizenz 4 :: ClientID=000-000-000-004
Anschließend verkaufen wir das ganze und Tragen in unser Webdatenbank folgendes ein:

Delphi-Quellcode:
Tabelle HardwareKeys

Client ID                     Hardwarekey
-----------------------        ----------------------- 
ClientID=000-000-000-001       <Liste> (noch leer)
ClientID=000-000-000-002       <Liste> (noch leer)
{...}
ClientID=000-000-000-010       <Liste> (noch leer)


Tabelle Installkeys

Seriennummer                  Installkey
-----------------------        ----------------------- 
001-SER-IEN-N00-000            INS-TAL-L02-302

Wir schicken dem Kunden das Packet zu, und legen eine CD mit rein (Das Programm), sowie eine weitere CD mit den 10 Lizenzdateien. Auf einen Zettel schreiben wir den Installationskey (INS-TAL-L02-302). Auf dem Zettel mit dem Installationskey schreiben wir außerdem drauf, das der Installationskey VERTRAULICH zu behandelt ist.

... die post verschickt das Packet ...

... am Nächsten Morgen kommt es beim Kunden an, er packt es aus und Installiert auf PC1 die Software. Für die Installation ist kein Code erfoderlich. Beim ersten Start des Programmes erstellt das Programm den einmaligen PC Hardware Key.

Das Programm fragt nach einiger gültigen Lizenzdatei, welcher wir ihm geben. Er verbindet sich mit unserem Webserver und schaut, in der Tabelle "Installkeys" ob die Seriennummer aus der Lizenzdatei vorhanden ist.

Wenn die Seriennummer vorhanden ist, fragt er uns nach dem Installationskey. Wir geben ihn also ein (INS-TAL-L02-302). Er prüft ob mit Hilfe unserer Webdatenbank mit der Tabelle Installkeys, ob die Seriennummer + Installkey zusammengehören. Wenn ja, registriert sich das Programm in der Tabelle HardwareKeys mit seinem PC Hardwarekey. Wenn der Hardwarekey (1234-Hard-ware) lauten würde, würde unsere Webdatenbank danach so aussehen:

Delphi-Quellcode:
Tabelle HardwareKeys

Client ID                     Hardwarekey
-----------------------        ----------------------- 
ClientID=000-000-000-001       1234-Hard-ware
ClientID=000-000-000-002       <Liste> (noch leer)
{...}
ClientID=000-000-000-010       <Liste> (noch leer)


Tabelle Installkeys

Seriennummer                  Installkey
-----------------------        ----------------------- 
001-SER-IEN-N00-000            INS-TAL-L02-302
Eine ClientID ist also jetzt einem PC Hardware Key in unserer Datenbank zugeordnet.

Was passiert nun wenn wenn ein anderer PC (mit einem anderen Hardwarekey) ebenfalls versuchen würde, mit einer ClientID welche bereits auf einen andern PC registriert ist, das Programm zu starten?

Wenn er merken würde, das die ID bereits vergeben ist und den Start verweigern würden hätten wir ein Problem: Wenn die Hardware geändert wird, könnte der Kunde das Programm nicht mehr starten.

ALso registriert sich der PC ebenfalls mit seinem Hardwarekey (4567-Hard-ware) in der Liste. Dafür fragt er zuerst nach dem geheimen, zur Seriennummer gehörenden Installkey, erst dann lässt sich das Programm registrieren. Dann sieht unsere Webdatenbank so aus:

Delphi-Quellcode:
Tabelle HardwareKeys

Client ID                     Hardwarekey
-----------------------        ----------------------- 
ClientID=000-000-000-001       1234-Hard-ware
                               4567-Hard-ware

ClientID=000-000-000-002       <Liste> (noch leer)
{...}
ClientID=000-000-000-010       <Liste> (noch leer)


Tabelle Installkeys

Seriennummer                  Installkey
-----------------------        ----------------------- 
001-SER-IEN-N00-000            INS-TAL-L02-302

Oben in der Liste der HardwareKeys einer ClientID steht immer der zu letzt hinzugefügte / überprüfte Key!

Dieser Vorgang passiert nun bei jedem programmstart und zusätzlich noch mal alle 24 Stunden wenn das Programm dauerthaft läuft. Er prüft jedesmal, ob die Kombination von ClientID + seinem HardwareKey vorhanden ist. Des weiteren Überprüft er, ob Sein Hardwarekey auf Platz 1 der Liste steht. Wenn dies nicht der Fall ist, wird sein Key auf Platz 1 gesetzt.


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

Zusammenfassung der ganz oben genannten Punkte

(a) Eine Programmlizenz darf nur einmal verwendet werden

Bei jeder Änderung wird auf der Logdatei unseres Webservers ein Eintrag erstellt. Normalerweise sieht diese im Zeitraum vom 01 Januar bis 07 Januar so aus:

Zitat:

01-Jan-07 10:00 Uhr :: HardwareKey (1234-Hard-ware) wurde ClientID (000-000-000-001) hinzugefügt
Würden 2 Computer ein und die selbe Lizenz verwenden sieht die Log so aus:

Zitat:

01-Jan-07 10:00 Uhr :: HardwareKey (1234-Hard-ware) wurde ClientID (000-000-000-001) hinzugefügt
01-Jan-07 10:00 Uhr :: HardwareKey (5678-Hard-ware) wurde ClientID (000-000-000-001) hinzugefügt
01-Jan-07 10:23 Uhr :: HardwareKey (1234-Hard-ware) wurde ClientID (000-000-000-001) als Default Wert festgelegt
01-Jan-07 10:33 Uhr :: HardwareKey (5678-Hard-ware) wurde ClientID (000-000-000-001) als Default Wert festgelegt
01-Jan-07 10:55 Uhr :: HardwareKey (1234-Hard-ware) wurde ClientID (000-000-000-001) als Default Wert festgelegt
01-Jan-07 11:03 Uhr :: HardwareKey (5678-Hard-ware) wurde ClientID (000-000-000-001) als Default Wert festgelegt
01-Jan-07 11:04 Uhr :: HardwareKey (1234-Hard-ware) wurde ClientID (000-000-000-001) als Default Wert festgelegt
01-Jan-07 18:04 Uhr :: HardwareKey (5678-Hard-ware) wurde ClientID (000-000-000-001) als Default Wert festgelegt
Diese Log wäre für uns In der Form ein Idiz dafür, das eine Lizenz doppelt verwendet wird.


(b) Eine Programmlizenz muss einer Firma zugeordnet werden können

Ist dank der einmaligen Seriennummer je Firma ohne Probleme möglich. So kann geschaut werden, welche Firma illegalerweise eine Lizenz weitergegeben hat.


Gibt es in der denkweise Schwachstellen ? Was bitte erst mal außen vorbleibt, sind die Möglichkeit das Programm zu patchen und die Abfrage zu überbrücken.


Eine Frage bleibt offen: Wie erstelle ich einen einmaligen, unfälschbaren Hardwarekey... ?

Klaus01 21. Nov 2006 14:20

Re: Kopierschutz einer Anwendung
 
Hallo,

eine kleine Bemerkung:
Dein Verfahren setzt voraus, das alle Client PCs Internetzugang haben.
Ist es immer sichergestellt, dass dem so ist?

Grüße
Klaus

Martin W 21. Nov 2006 14:24

Re: Kopierschutz einer Anwendung
 
Bei der Installation kann folgendes ausgewählt werden:

a) Ein Rechner hat direkten Internetzugriff
b) Ein Rechner verbindet sich über ein "Connectionprogramm", welches auf einem Server im Netzwerk liegt, der immer I- Net Zugang hat. Das Connectingprogramm schleift die Packete einfach weiter zwischen CLient und Webdatenbank.

Aber ein Computer im Netzwerk der immer INternetzugang hat, so etwas setze ich voraus.

pap80b 21. Nov 2006 15:32

Re: Kopierschutz einer Anwendung
 
Gehen wir mal davon aus, die Daten werden verschlüsselt übermittelt, damit niemand einfach etwas nachprogrammiert, was anstatt des Servers eine Lizenzbestätigung rausschickt.

Wenn die Software auf einer virtuellen Maschine installiert wird, kann man diese dann auf mehrere Arbeitsplätze kopieren und das Programm kriegt es nicht mit.

Man könnte die Software auf einen Server installieren und über Remote Desktop mit der arbeiten.

Martin W 21. Nov 2006 15:36

Re: Kopierschutz einer Anwendung
 
Zitat:

Wenn die Software auf einer virtuellen Maschine installiert wird, kann man diese dann auf mehrere Arbeitsplätze kopieren und das Programm kriegt es nicht mit.
OK, das ist nicht ganz einfach zu lösen...


Zitat:

Man könnte die Software auf einen Server installieren und über Remote Desktop mit der arbeiten.
Programm darf nur einmal gestartet werden, und da eine Lizenz vorhanden ist passt des... Merhmals starten auf einem Server geht net, kopieren ja eh net...

pap80b 21. Nov 2006 15:42

Re: Kopierschutz einer Anwendung
 
Habe es selbst nicht getestet, ist aber eventuell einen Versuch wert.

function VMware: LongBool; stdcall;
begin
Result := False;
{$IFDEF CPU386}
try
asm
mov eax, 564D5868h
mov ebx, 00000000h
mov ecx, 0000000Ah
mov edx, 00005658h
in eax, dx
cmp ebx, 564D5868h
jne @@exit
mov Result, True
@@exit:
end;
except
Result := False;
end;
{$ENDIF}
end;

Quelle: http://www.buha.info/board/showthread.php?p=301232

Martin W 21. Nov 2006 15:45

Re: Kopierschutz einer Anwendung
 
Joa danke, des kommt auf jeden Fall nach dem ausgibigen Test mit rein..

Siehst du noch schwachstellen soweit? Wie kann man einen Hardwarekey erstellen?

pap80b 21. Nov 2006 15:52

Re: Kopierschutz einer Anwendung
 
Man könnte z.B. die MAC Adresse der Netzwerkkarte in die Harwarekennung mit reinnehmen.
Es gibt zwar auch hierfür Programme, mit denen man diese fälschen kann, aber schließlich wird das Patchen ja auch außen vor gelassen.

Martin W 21. Nov 2006 15:55

Re: Kopierschutz einer Anwendung
 
Das Patchen MEINER Anwendung wird ausgeschlossen... PAckete zum Server sniffen, etc... all das ist möglich...

ErazerZ 21. Nov 2006 15:59

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von pap80b
Habe es selbst nicht getestet, ist aber eventuell einen Versuch wert.

function VMware: LongBool; stdcall;
begin
Result := False;
{$IFDEF CPU386}
try
asm
mov eax, 564D5868h
mov ebx, 00000000h
mov ecx, 0000000Ah
mov edx, 00005658h
in eax, dx
cmp ebx, 564D5868h
jne @@exit
mov Result, True
@@exit:
end;
except
Result := False;
end;
{$ENDIF}
end;

Quelle: http://www.buha.info/board/showthread.php?p=301232

Delphi-Quellcode:
{
  Orginal code by Gobo
}
function IsVirtualMachine: Boolean;
var
  Temp: Array[0..5] of Byte;
  TempB: Byte;
begin
  asm
    sidt Temp
    mov bh, byte ptr [Temp + 5]
    mov TempB, bh
  end;
  case TempB of
    $ff, $e8:
      Result := True;
    else
      Result := False;
  end;
end;

pap80b 21. Nov 2006 16:02

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Martin W
Das Patchen MEINER Anwendung wird ausgeschlossen... PAckete zum Server sniffen, etc... all das ist möglich...

Ich hoffe du meinst damit NICHT, dass man das Programm nicht patchen könnten :zwinker:

Martin W 21. Nov 2006 16:09

Re: Kopierschutz einer Anwendung
 
neeee... des mein ich nicht *grins*

resolution 21. Nov 2006 19:08

Re: Kopierschutz einer Anwendung
 
man kann software nie unkopierbar machen :p

bei so ner authentifizierung gibt es i.d.R. zwei schwachstellen, einmal der client, und zum anderen die verbindung..

entweder simuliere ich einen server indem ich die verbindung knacke oder ich cracke das programm..


man kann das problem mit dem knacken der verbindung teilweise beseitigen, indem du vor herausschicken des programmes die HW-IDs der rechner auf dem die software laufen soll erhälst..
dann kannste dein programm teilweise mit der hardware-id verschlüsseln so dass es zur laufzeit den programm-core entschlüsselt und ausführt..
das problem an dieser stelle ist, dass man das unverschlüsselte programm aus dem speicher holen könnte..

also, es gibt viele wege es kompliziert zu machen, schutz gibts keinen ;)

Mackhack 21. Nov 2006 20:26

Re: Kopierschutz einer Anwendung
 
Und ich denke darum geht es Martin hier. Jeder halbwegs normaldenkende weis inzwischen dass es keinen 100 % sicheren Schutz gibt, aber man kann es einem Cracker eben erschweren. Und wenn man es so aufzieht dass man eben den Leuten die es gecrackt haben verweigert Updates zu liefern werden es sicherlich die Leute 2 mal ueberlegen. Zudem weis ich dass es sich dabei um eine Software handelt fuer Firmen, nicht fuer Privatkunden. Da ist dann auch nochmal zu sehen dass sich viele Firmen nicht getrauen Raubkopierte Software zu nutzen.

Ich will nur n Beispiel bringen aus meiner eigenen Erfahrung von meiner Lehrzeit. Meine Lehrfirma hatte nur eine Windows-Server Lizenz betrieb aber insgesamt 19 Server damit und hatte eine Workstation Lizenz und betrieb uber 100 Workstations damit. Als ein Mitarbeiter unfairerweise gekuendigt wurde wandte er sich an Microsoft um wohl seinen persoenlichen Racheakt zu vollziehen. Es gab ein Verfahren und die Firma wurde mit ueber 500.000 DM 1999 zur Kasse gebeten. Ich habe das Ende dessen nicht weiter mitverfolgt da ich kurze Zeit spaeter fertig war mit der Lehre.

Man sieht, es lohnt sich nicht wirklich in Unternehmen Raubkopierte Software anzubieten!

Christian Seehase 21. Nov 2006 23:22

Re: Kopierschutz einer Anwendung
 
Moin Martin,

auf jeden Fall solltet ihr 100%ige Erreichbarkeit eures Servers sicherstellen, denn wenn jemand auf einmal die Software nicht installieren kann, weil euer Server nicht erreichbar ist, kann das Schadenersatzforderungen nach sich ziehen.

Reinhard Kern 22. Nov 2006 00:12

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Martin W
Hi;

Ich habe mir ein Kopierschutz / Passwortschutz ausgedacht, welchen ich euch kurz erklären möchte. Bitte nennt mir Schwachstellen und Verbesserungsvorschläge.

Dieser Vorgang passiert nun bei jedem programmstart und zusätzlich noch mal alle 24 Stunden wenn das Programm dauerthaft läuft. Er prüft jedesmal, ob die Kombination von ClientID + seinem HardwareKey vorhanden ist. Des weiteren Überprüft er, ob Sein Hardwarekey auf Platz 1 der Liste steht. Wenn dies nicht der Fall ist, wird sein Key auf Platz 1 gesetzt.

Hallo,

ich weiss nicht, ob du dich in diesem Punkt schon absichtlich unklar ausdrückst. Ich sehe 2 Alternativen:

1. Die Software startet nicht mehr, wenn euer Webserver nicht erreichbar ist, z.B. weil ihn der Insolvenzverwalter aus Kostengründen abgeschaltet hat. Ich wäre nicht bereit, für eine Software zu bezahlen, bei der ich grundsätzlich nicht sicher sein kann, ob sie nächste Woche noch läuft.

2. Wenn 1 nicht zutrifft, betreibe ich die Software beliebig oft und lange auf Rechnern ohne Internetanschluss, oder die Firewall unterbindet diese eine Verbindung.

Gruss Reinhard

OldGrumpy 22. Nov 2006 00:43

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von ErazerZ
Delphi-Quellcode:
{
  Orginal code by Gobo
}
function IsVirtualMachine: Boolean;
var
  Temp: Array[0..5] of Byte;
  TempB: Byte;
begin
  asm
    sidt Temp
    mov bh, byte ptr [Temp + 5]
    mov TempB, bh
  end;
  case TempB of
    $ff, $e8:
      Result := True;
    else
      Result := False;
  end;
end;

Ist SIDT nicht ein privilegierter Opcode? Das kann eigentlich nur anhand eines "Bugs" in VMWare funktionieren... Nebenbei, wozu der Umstand mit mov bh und TempB? Warum nicht einfach Temp[5] mit $ff und $e8 vergleichen?

Last but not least: Mit WMI gehts über ne query auf Win32_ComputerSystem (Manufacturer, Model) viel simpler:

Normaler PC:
Manufacturer: Dell Computer Corporation
Model: Latitude D600

VMware:
Manufacturer: VMware, Inc.
Model: VMware Virtual Platform

VirtualPC:
Manufacturer: Microsoft Corporation
Model: Virtual Machine

:mrgreen:

MaBuSE 22. Nov 2006 08:08

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Martin W
Bei der Installation kann folgendes ausgewählt werden:
a) Ein Rechner hat direkten Internetzugriff
b) Ein Rechner verbindet sich über ein "Connectionprogramm", welches auf einem Server im Netzwerk liegt, der immer I- Net Zugang hat. Das Connectingprogramm schleift die Packete einfach weiter zwischen CLient und Webdatenbank.
Aber ein Computer im Netzwerk der immer INternetzugang hat, so etwas setze ich voraus.

Ich würde Dein Programm nicht einsetzen wollen. ;-)
  • Internetzugriff ist stark beschränkt.
    Du schreibst Du setzt ihn bei der installation voraus, aber Dein Programm prüft ja bei jedem Start bzw nach 24h.
    -> was machst du wenn kein internet verfügbar (bzw. Firewall)
  • Benutzer mit Laptop haben per Definition nicht immer überall Internet.
  • Was ist wenn Dein Server nicht verfügbar ist.
  • Was ist, wenn die PC's mit z.B. Norton Ghost geklont werden.
    • Der Kunde hat 100 Lizenzen gekauft, aber Du siehst in Deinem Log er verwendet 100 mal die 1. Lizenz.
    • Wie reagierst Du?
    • Willst Du den Kunden zwingen alle 100 PC's einzeln zu installieren?
      -> was machst Du wenn der Kunde nicht mitspielt.
    • "Schaltest" Du den Kunden ab
      -> Schadensersatzforderungen
  • Lies Dir mal das hier durch: http://de.wikipedia.org/wiki/Dongle
    Kostet zwar Geld, aber das muß der Kunde dann halt "mitbezahlen"
    Bei www.Aladdin.de kostet ein Dongel z.B. ca. 50 Eur im Starterkit (5 USB Dongles inkl Software (SDK) und Beschreibung)
    oder bei http://www.sg-lock.com/de/index.php ab ca. 10 Eur (inkl Delphi Unterstützung)
  • Durch solch eine Technik vergraulst Du aber mehr Kunden als Du gewinnst.
In Deinem Fall wäre eine Vorgehensweise wie beim Lizenzserver (wie z.B. Borland ihn verwendet) die bessere Lösung.
Ich kann Delphi 2006 hier im Netzwerk uneingeschränkt verwenden.
Trenne ich mich vom Netz, so merkt die Software, dass kein Lizenzserver mehr verfügbar ist und ein Countdown von 30 Tagen beginnt. Nach 30 Tagen kann ich Delphi nicht mehr starten. Wenn ich innerhalb der 30 Tage wieder im Netz bin, so wird der Countdown wieder zurückgesetzt und ich kann wieder uneingeschränkt arbeiten.
Auf dem Lizenzserver sind also "named licenses" vergeben, sie sind also jedem Nutzer zugeordnet.
Der Server an sich ist nur ein kleiner Dienst auf einem unserer File Server.

Hier steht was zu dem belise: http://info.borland.de/newsletter/nl04_6/Edu/Edu.htm
( mit google "belise borland" findest Du folgenden Link: http://license.borland.com/lservers/belise.jsp )

Mackhack 22. Nov 2006 08:29

Re: Kopierschutz einer Anwendung
 
Bei sg-lock steht dass es mit einer dll funktioniert. Wird die dll weitergegeben ist dann der Kopierschutz hinueber @ mabuse? Weist du da weiter?

MaBuSE 22. Nov 2006 08:39

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Mackhack
Bei sg-lock steht dass es mit einer dll funktioniert. Wird die dll weitergegeben ist dann der Kopierschutz hinueber @ mabuse? Weist du da weiter?

Ich kenne sg-lock nicht, aber das ist wohl nur der Treiber. In dem USB Key steckt ein großer Schlüssel und Verslüsselungsalgorythmus, der in Deinem Programm verwendet wird. Also ohne den Key kannst Du z.B. Teile deines Programmes nicht entschlüsseln und es somit nicht verwenden.

Ich habe mir das aber noch nicht genau angeschaut. ;-)
(Kommt aber noch, ich wollte mir mal so was zulegen und ausprobieren).
Ich dachte allerdings daran das als Zugangsschutz zu meinem PC zu verwenden (zweckentfremden).
Meine Software (gina) würde dann nur den Zugang zum PC gestatten, wenn der Dongle dinn ist. ;-)

Mackhack 22. Nov 2006 08:41

Re: Kopierschutz einer Anwendung
 
Ok.... Vlt. kannst du ja mal was posten dann hier oder so wie deine Erfahrungen sind!

Catbytes 22. Nov 2006 08:44

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Mackhack
Bei sg-lock steht dass es mit einer dll funktioniert. Wird die dll weitergegeben ist dann der Kopierschutz hinueber @ mabuse? Weist du da weiter?

Die DLL bringt Dir ja ohne Dongle nichts. Du mußt den Dongle dann schon in den anderen Rechner reinstecken. Und damit läuft dann die Software auf dem ersten PC nicht mehr, weil ja da der Dongle fehlt. Die Dongles mußt Du natürlich "personalisieren", weil sonst kann ich mir ja einfach einen Dongle bei sg-lock nachkaufen.

Wenn ein Kunde von mir Mehrfachlizenzen benötigt, bekommt er einen Registrierkey nach dem Motto:

123-456-001-010

Das wären dann 10 Lizenzen (001-010). Diesen Key gibt er dann bei allen zehn Rechnern ein. Der Rest ist Vertrauenssache.

btw: Auch ich würde Dein Programm so nicht benutzen. Ich habe bezahlt und möchte das Teil benutzen. Ich möchte mich nicht krumm legen, damit was läuft (Firewall freischalten, achten auf Internetverbindung etc.), was ich bezahlt habe. Mit solchen Methoden fühle ich mich als Kunde "verarscht", weil Du mir nicht traust - und ohne Vertrauensbasis gibt es bei mir kein Geschäft.

Und wenn jemand das Teil hacken will, schafft er es. Ob mit Deiner Lösung, mit Dongle oder sonst irgendwas - er schafft es. Verlaß Dich da drauf...

MaBuSE 22. Nov 2006 09:00

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Mackhack
Ok.... Vlt. kannst du ja mal was posten dann hier oder so wie deine Erfahrungen sind!

Das seint sehr simpel aufgebaut zu sein.

Ob's sicher ist weiß ich nicht. ;-)

Lies mal das Handbuch für Programmierer:
http://www.sg-lock.com/download/SG-Lock_Manual_Deu.pdf

Das DemoKit 1 Key, CD + Handbuch kostet 29 Eur.

Ich kann Dir nicht sagen wann ich mir so was kaufen werde, ich bin noch in der *mal überlegen welches* Phase.

CG2003 22. Nov 2006 09:05

Re: Kopierschutz einer Anwendung
 
Bei Aladdin kann man sich ein Testpaket bestellen, bestehend aus dickem Enticklerhandbuch, einem USB-Dongle, und einer CD-Rom mit SDK, Demos etc.

MaBuSE 22. Nov 2006 09:06

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Mackhack
Ok.... Vlt. kannst du ja mal was posten dann hier oder so wie deine Erfahrungen sind!

Hab gerade einen Artikel vomEntwickler zu dem Thema gefunden (Ausgabe 01.06)
http://www.sg-lock.com/download/test_sg-lock.pdf

Mackhack 22. Nov 2006 09:13

Re: Kopierschutz einer Anwendung
 
Dank dir Mabuse!

resolution 22. Nov 2006 10:29

Re: Kopierschutz einer Anwendung
 
dongles find ich ungünstig, viele firmen arbeiten arbeiten auch nur mit einem NFS und die clients haben nicht immer alle USB..
ausserdem verteuert es das, 1000 lizensen sind 1000 dongles und das ändert am preis auch was ;)

was Reinhard Kern und MaBuSE schreiben hab ich gestern auch gedacht, keine firma wird eine software kaufen auf die sie täglich angewiesen ist, welche allerdings einen permanenten internetzugang benötigt..
was wenn die internetverbindung der firma abbricht ? bauarbeiten -> bagger ;)
dann kann die firma in dieser zeit nicht arbeiten, kann zwar schadensersatzansprüche stellen (an die baufirma) aber ein fataler image-verlust bleibt und das kann sich heute keiner mehr leisten..

so langsam wird es ja eine allgemeine kopierschutzdiskussion.. vielleicht solltest du dein problem und die gewünschte lösung nochmal präzisieren..
es klingt nicht so als möchtest du den start der software verhindern.. du möchtest nur wissen, welche hardware-IDs welche client-id nutzen..

ich würde während der installation einmalig eine internetverbindung vorauszusetzen, dort wird die hw-id übertragen und erst dann ein mit dieser verschlüsselter programm-core übertragen..
dieser ist dann nur auf diesem pc lauffähig.. und ohne diesen das programm nicht -> simples weiterkopieren fällt also aus!

wie bei einem hardware-wechsel (also neue hw-id) zu verfahren ist musst du dann überlegen, am besten jeweils die letzte hw-id verschlüsselt und numeriert speichern (*), kann der core mit neuer hw-id nicht dechiffriert werden verbindet sich das programm mit eurem server, sendet die alte und eine neue hw-id und erhält mit der neuen hw-id chiffrierten programm-core.. danach startet das programm neu und meldet sich beim server an, dass der neue code funktioniert (könnte wichtig sein ;)
du kannst dann sagen, dass maximal 2 neue hw-id's möglich sind, danach muss eine neue lizenz erworben werden oder so..

(*): bei jedem start der software eine hw-id generieren, entspricht sie der letzten muss man nichts ändern, ist es eine andere wurde die hw geändert (oder die software kopiert)

du solltest auf jeden fall versuchen die nutzung/installation der software unproblematisch zu halten ;)

ich denke auch das firmen keine illegal erworbene software nutzen würden, aber dazu kann ich nicht einschätzen

lg,
Manuel

Martin W 22. Nov 2006 11:25

Re: Kopierschutz einer Anwendung
 
Zitat:

es klingt nicht so als möchtest du den start der software verhindern.. du möchtest nur wissen, welche hardware-IDs welche client-id nutzen..
Danke für eure zahlreichen Antworten erst einmal. Ich möchte NICHT den Start der Software verhinden, sondern gehe ehr dazu über "abzuschrecken"...

Den Start verhinden will ich jetzt nich mehr, ehr würde ich es jetzt so machen:

a) Wenn die Software nicht validiert werden kann, werden die Daten einfach lokal zwischengespeichert und
... validiert sobald eine Internetverbindung besteht
... beim nächsten Updatevorgang validiert.

So kann eine Software auch mal 1nen Monat ohne I- Netverbindung laufen, beim nächsten Update hab ich wieder die Daten die ich will.

Ich werde mir alles nochmals in Ruhe überlegen und heute abend meine neue Variante des kopierschutzes posten, bei der ich all eure Ideen und Ratschläge berücksichtigen werde.

MaBuSE 22. Nov 2006 12:19

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von CG2003
Bei Aladdin kann man sich ein Testpaket bestellen, bestehend aus dickem Enticklerhandbuch, einem USB-Dongle, und einer CD-Rom mit SDK, Demos etc.

Danke für den Hinweis. Ich hab mir mal so ein Demo-Paket bestellt. ;-)

Martin W 23. Nov 2006 15:51

Re: Kopierschutz einer Anwendung
 
Also folgendes :-) Ich hab über alles noch mal nachgedacht und bin zu folgendem Ergebniss gekommen:


Schritt 1: Der Kunde bestellt bei uns die Software

Wir haben damit seine Addresse. Wir schicken ihm eine CD mit der Software und einen USB Dongle. Alle Dongles die wir allgemein vergeben, enthalten eine (!) einmalige, nicht veränderbare Nummer (von Werk aus), diese Nummer ist eine Art IdentifyCode, welcher meiner / userer (!) Firma zugeordnet ist. Des weiteren ist auf dem Dongle die Kundennummer des Kunden gespeichert!

Damit ist ausgeschlosse, das andere sich einfach Dongles bestellen und diese versuchen mit meiner Software zu laufen zu bekommen >>> Denn diese haben einen anderen Identify Code.


Schritt 2: Der Kunde installiert und benutzt die Software

Das nun folgende Schema wird bei jedem Start durchgeführt:
  • Die Software startet und überprüft ob ein Hardwaredongle mit dem IdentityCode unserer Firma vorhanden ist. Wenn dies nicht os ist, wird die Software beendet.
  • Die Software erstellt einen einmaligen ComputerKey und schaut, ob bereits DIESER einmaliger ComputerKey auf dem USB Dongle geschrieben wurde. Wenn dies der Fall ist, ist die Überprüfung abgeschlossen, die Software wird gestartet.
  • Wenn der HardwareKey PC´s <> dem des Dongles ist bzw. keiner auf dem Dongle vorhanden ist, wird eine Aktivierung gestartet. Auf dem Dongle wird sofort ein Datum geschrieben, bis wann die Software ohne gültige Aktivierung startbar ist (10 Tage).
  • Der Aktivierungsassistent schickt die Kundennummer (steht im Dongle) + Hardwarekey + Install Key an unseren Webserver. Dieser generiert eine Anweisung, in welcher steht, dass der aktuelle Hardwarekey auf dem Dongle gespeichert werden soll.
  • Der Hardwarekey auf dem Dongle ist nun = HardwareKey des PC
  • Die Software wird neu gestartet

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

Sezenario 1: Der Kunde versucht die Software ohne Dongle zu starten

Dies merkt die Software und beendet sich.


Sezenario 2: Der Kunde kauft sich für einge Euro ein Hardware Dongle und versucht die Software zu starten

Da der IdentKey seines gekauften auf dem Dongle unterschiedlich ist als die Dongles die wir rausgeben merkt dies die Software und beendet sich.


Sezenario 3: Der Kunde versucht eine Softwarelizenz auf 2 PC´s zu nutzen

Da nur ein Hardwaredongle vorhanden ist, ist der parallele Betrieb nicht möglich. Nach dem Start wird permanent überprüft, ob der Dongle noch im System ist. Der "unparallele" Betrieb (Erst das erste System beenden, dann das 2te starten) ist auch nicht möglich... denn der HardwareKey des PC´s auf dem zu letzt Aktiviert wurde ist auf dem Dongle gespeichert.


Sezenario 4: Der Kunde versucht den Dongle zu ändern

Ist dank starker Verschlüsselung und Authensierung nicht möglich.


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

Schwachstellen
  • Unsere Exe wird gepatched. Mögliche Lösung: Die relavanten Programmcodes mit Hilfe des Dongles verschlüsseln.

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

Meine Fragen:
  • Kennt ihr noch andere Schwachstellen?
  • Wie bekommt man einen sicheren Hardware(und Software?)Key hin?


Gruß
Martin

MaBuSE 24. Nov 2006 07:39

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von Martin W
Sezenario 3: Der Kunde versucht eine Softwarelizenz auf 2 PC´s zu nutzen

Da nur ein Hardwaredongle vorhanden ist, ist der parallele Betrieb nicht möglich. Nach dem Start wird permanent überprüft, ob der Dongle noch im System ist. Der "unparallele" Betrieb (Erst das erste System beenden, dann das 2te starten) ist auch nicht möglich... denn der HardwareKey des PC´s auf dem zu letzt Aktiviert wurde ist auf dem Dongle gespeichert.

...
  • Kennt ihr noch andere Schwachstellen?
  • Wie bekommt man einen sicheren Hardware(und Software?)Key hin?

Hallo,
was spricht den gegen den unparalellen Betrieb Deiner Software?
Es ist doch sichergestellt, das immer nur einer gleichzeitig arbeiten kann.

Mir sind keine weiteren Schwachstellen bekannt.
Eine vieleicht:
Wenn Du Dich für einen Hersteller entscheidest, hast Du natürlich auch das Risiko, dass wenn einmal ein Dongle der Firma "geknackt" wurde, es leicht möglich ist einen Hack für alle Produkte, die damit geschützt sind zu erstellen.
Ich gehe aber mal davon aus, das die Hersteller alles dransetzten, damit Ihre Dongles nicht geknackt werden. Damit wäre ja ihr Geschäftsmodell zerstört und die könnten gleich Konkurs anmelden.

Einen sicheren Schlüssel kann man sicher mit einem Programm aus dem SDK des Dongles erzeugen.

sgoers 11. Dez 2006 11:00

Re: Kopierschutz einer Anwendung
 
Hallo zusammen,

um es vorweg zu sagen: Ich habe SG-Lock entwickelt.

Es gäbe da noch eine Schwachstelle: Und zwar könnte jemand versuche den Dongle zu emulieren. D.h. er klinkt sich an einer Stelle der Kommunikation zwischen deiner Software und dem Dongle ein und hängt der wirklichen Dongle ab. Das geht dann, wenn der Dongle "statisch" ist. D.h. er hat ein paar Speicherinhalte und ein paar andere Antworten auf die Anfragen parat. Wenn der Hacker alle Antworten kennt (protkolliert hat) setzt er einfach eine Software an die Stelle des Dongles, die die richtigen Antworten liefert.

Lösung: der Dongle sollte extrem viele verschiedene Antworten parat haben. Dazu muss man allerdings auch alle richtigen Antworten wissen, denn sonst kann man nicht entscheiden, ob die gegebene Antwort richtig ist. ... Einige werden es geahnt haben: Das macht eine Challenge-Response-Authentifizierung mithilfe eines Verschlüsselungsverfahrens. Auch hier sind alle Frage-Antwort Paare eindeutig bzw. statisch. Nur mit dem Problem, dass es extrem viele Möglichkeiten gibt, die unmöglich alle zu protokollieren sind. Bei einer Verschlüssellung mit einer Schlüssellänge von 128 bit eben 2^128 Stück - viel Spass dabei.


Gruß
Sven


PS Wenn hier jemand ein SG-Lock testen will: meine Firma gibt ein paar voll funktionsfähige Mini-Demo-Kits (ohne gedrucktes Handbuch) für dieses Forum gratis ab. Nur Discountcode XSD345 im Feld "Region" auf der Bestellseite www.sg-lock.de eingeben und durchklicken bis zum Ende (die angezeigten Kosten fallen nicht an).

MaBuSE 11. Dez 2006 12:50

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von sgoers
Hallo zusammen,
um es vorweg zu sagen: Ich habe SG-Lock entwickelt.

Herzlich Willkommen bei der DelphiPraxis. :dp:

Zitat:

Zitat von sgoers
PS Wenn hier jemand ein SG-Lock testen will: meine Firma gibt ein paar voll funktionsfähige Mini-Demo-Kits (ohne gedrucktes Handbuch) für dieses Forum gratis ab. Nur Discountcode XSD345 im Feld "Region" auf der Bestellseite www.sg-lock.de eingeben und durchklicken bis zum Ende (die angezeigten Kosten fallen nicht an).

Und vielen Dank für Dein großzügiges Angebot.

mfg
MaBuSE

brechi 11. Dez 2006 13:56

Re: Kopierschutz einer Anwendung
 
Solang da etwas von Kosten steht bestell ich mir keins, ansonsten würd ichs mir ja mal anschaun.
Kann ja jeder im OFrum schreiben, nehmt den Bestellcode dann kostet das nichts un im endeffekt bekommt derjenige nur Provision von den Leuten die es demjenigen abnehmen.
Besonders weil derjenige heri nur einen Post hat.

Also vorsichtig sein ;)

MaBuSE 11. Dez 2006 14:04

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von brechi
Also vorsichtig sein ;)

Ich habe mir schon eins bestellt. ;-)
Ich werde Dir dann hier posten ob's geklappt hat.

[edit]
Ich glaube der "Sven Goers" (Geschäftsführer von SG-Lock) hätte sicherlich auch was dagegen, wenn jemand, der Provision bekommt seinen Namen verwendet.

Ich glaube das ist schon der "richtige" Sven.
[/edit]

sgoers 11. Dez 2006 15:07

Re: Kopierschutz einer Anwendung
 
Hallo zusammen,

eine formlose Bestellung eines KOSTENLOSEN Demokits per email an sales@sg-intec.de mit Firmennamen, Name und vollständiger Adresse sowie dem Discount-code reicht auch.

Mit besten Grüßen
Sven

OldGrumpy 11. Dez 2006 15:23

Re: Kopierschutz einer Anwendung
 
*Das* kommt jetzt etwas zu spät :)

Phoenix 11. Dez 2006 15:57

Re: Kopierschutz einer Anwendung
 
Zitat:

Zitat von brechi
Solang da etwas von Kosten steht bestell ich mir keins, ansonsten würd ichs mir ja mal anschaun. Besonders weil derjenige heri nur einen Post hat.
Also vorsichtig sein ;)

Nur weil jemand mehr Posts hat ist er noch lang nicht Vertrauenswürdiger.

Sorry, aber das finde ich echt unschön. Da macht jemand ein Super Angebot (Vielen Dank auch von meiner Seite @Sven! :thumb:), und dann kommt so ein Kommentar.

Mir persönlich würd das die Sache grad wieder madig machen und dann würde ich mir überlegen, ob ich nochmal sowas anbiete oder nicht.

OldGrumpy 12. Dez 2006 09:58

Re: Kopierschutz einer Anwendung
 
Da brechi vor Angst schlotterte, dachte ich mir, ich melde mich mal. Heute kam mein kostenloses Mini-Demo-Kit, als Einwurf-Einschreiben. Kleiner Luftpolsterumschlag, darin eine absolut schnuckelige Mini-Amaray (ich weiss nicht wie ich das Ding sonst bezeichnen soll, wo kann man sowas kaufen? *g*) mit einer 3"-CDR (obenauf hochwertiger Aufdruck sowie handschriftlich Datum und API-Version - vorbildlich!) sowie ein sehr handlicher USB-Dongle. Der USB-Dongle ist sogar mit einem kleinen Stück Klebepad sicher in der Verpackung befestigt. Der Dongle hat ein semitransparentes dunkelblaues Gehäuse, und sogar eine Öse mit der er an den Schlüsselbund oder ähnliches passt. Mein erster Eindruck zum Gesamterscheinungsbild: Sehr sehr ordentlich :)

In den nächsten Tagen (Vorweihnachtsstress, seufz) werd ich mir dann mal die technische Seite zu Gemüte führen. Leider hat die CD nen derben Riss am Zentralloch, werd ich wohl vorsichtshalber mal mein altes 8x Laufwerk zum Auslesen nehmen :)

@sgoers: Das soll jetzt nicht heissen, dass ich Ersatz brauche, ich weiss mir da schon zu helfen. Immerhin war das Ding ja auch kostenlos :)

Relicted 12. Dez 2006 10:34

Re: Kopierschutz einer Anwendung
 
moin!
ganz ehrlich? die entwicklungskosten für eine gute lizenz applikation sind meist wesentlich höher als wenn man eine bereits vorhandene applikation erwirbt.

ich kann für eine kommerzielle anwendung würde ich auf das system von mirage zurückgreifen.
infos dazu auf www.mirage-systems.de

den setzen wir auch auf der arbeit ein.
der kann auch ne menge... floating license, web aktivierung, email, dongles, versionsmanagement ( basic, home, pro, ultimate what ever ), trialversionen, zeitlich begrenzte versionen.. etc etc..

gruß
reli


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.
Seite 1 von 2  1 2      

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