Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   SW Module mit Key schützen (https://www.delphipraxis.net/194590-sw-module-mit-key-schuetzen.html)

tomkupitz 10. Dez 2017 15:56

SW Module mit Key schützen
 
Hallo,

wir haben hier eine SW die mit einem "Messgerät" ausgeliefert wird. Nun sollen in die SW Funktionen eingebaut werden, die vom Kunden kostenpflichtig erworben werden können. Welche Möglichkeiten bestehen, die zugekaufte erweiterte SW mit einem Key oder Ähnlichem vor unzulässigem Kopieren zu schützen?

Danke und beste Grüße

LTE5 10. Dez 2017 15:58

AW: SW Module mit Key schützen
 
Egal welche Möglichkeit man wählt, es gibt immer Wege den Schutz zu umgehen.

Ich selber baue deswegen aus Prinzip keinen Schutz mehr ein. Denn jemand der deine Module verbotenerweise nutzen will, wird es auch erfolgreich tun.

himitsu 10. Dez 2017 16:14

AW: SW Module mit Key schützen
 
Schau mal ins GetIt, da finden sich auch paar Dinge.

Es gibt mehrere Produkte ala Bei Google suchenThemida.

Es gibt auch produkte, wo ein Hardware-Dongle (z.B. als USB-Stick) verwendet wird.
Nur als Hardware-Key (quasi die Seriennummer auslesen und im Programm prüfen) oder als Verschlüsselung, wo innerhalb der Hardware entschlüsselt wird (Programmcode verschlüsselt in der EXE/DLL).
Auch kann man Programmcode in externe Hardware auslagern, dann ist das garnicht erst kopierbar. Dazu zählen auch Online-Service, also bei euch, aber dafür muß das Programm einen Internetzugang besitzen.

Zacherl 10. Dez 2017 16:20

AW: SW Module mit Key schützen
 
VMProtect ist auch noch eine brauchbare Alternative zu Themida. Wenn du an Selbstbasteln denkst, dann verwirf die Idee am besten direkt wieder. Softwareseitiger "Kopierschutz" kann ausschließlich IMMER ausgehebelt werden; lediglich der zeitliche Aufwand unterscheidet sich hier signifikant - bis zu einem Punkt an dem sich Cracken einfach nicht mehr lohnt. Eigene Lösungen sind hier in der Regel in unter 10 Minuten umgangen.

zeras 10. Dez 2017 16:27

AW: SW Module mit Key schützen
 
Wie sieht es mit Turbopack aus?

mensch72 10. Dez 2017 16:33

AW: SW Module mit Key schützen
 
der einzige einigermaßen sichere Softwareschutz ist eine zusätzliche eigene freiprogrammierbare Hardware, z.B. 100% selbstentwickelter und frei non Standard programmierter USB-Stick mit einem schnelen 32Bit Microcontroler und möglichst viel internem Speicher für PrivateKeys und echte bidirektionale "RandomTabellen" Tabellen.

Wenn eine Kauflösung, dann lieber nur gute Software als nen 0815-Dongle!

https://www.oreans.com/products.php
"WinLicense®(incl.Themida®)" + "Code Virtualizer®" + "XBundler®"
Das wird im Banken und Gesundheitsbereich oft und großteils erfolgreich (also "noch sicher") eingesetzt.


Ich bleibe "weil ich es kann" lieber bei eigener Hardware:)
XY-SingleChip-Hardware ist nur für echte Profis mit wirklich aufwendiger Spezialtechnik zu analysieren und nachzubauen, da bleiben über 99% aller noch so guten Softwarehacker stecken, wenn die Logik und Berechnung wirklich nur in der externen Hardware stattfindet und dort per PC definitiv ausser IO-Daten nix per Software rein&rauskommen kann(also man selbst kein SoftwareBackdoor für z.B. einen Bootloader oder sonstige Updates einbaut).

LTE5 10. Dez 2017 16:34

AW: SW Module mit Key schützen
 
Das Problem ist, dass es am Ende zwangsweise immer eine if-Anweisung ist die für die Prüfung zuständig ist.
Sobald man die gefunden hat, ist jeder Schutz umgehbar.

mensch72 10. Dez 2017 16:40

AW: SW Module mit Key schützen
 
..."Das Problem ist, dass es am Ende zwangsweise immer eine if-Anweisung ist die für die Prüfung zuständig ist.
Sobald man die gefunden hat, ist jeder Schutz umgehbar."...

du denkst da nicht "weit genug"... sieh die PC Software doch einfach nur als Weiterleitung und Anzeige von XY... also das PC Programm kann und macht ausser SendDataX/GetResponseY 100% NIX... was so da per Software geknackt werden... klar kann jemand aus meiner PC&MAC Software sich ne Linuxsoftware selbst basteln, aber ohne die externe HW geht da garnix;)

himitsu 10. Dez 2017 16:45

AW: SW Module mit Key schützen
 
Zitat:

Zitat von LTE5 (Beitrag 1388442)
Das Problem ist, dass es am Ende zwangsweise immer eine if-Anweisung ist die für die Prüfung zuständig ist.
Sobald man die gefunden hat, ist jeder Schutz umgehbar.

Nein.

Ja, wenn nur an ein paar Stellen ein
Delphi-Quellcode:
if Schutzfunktion then
auftaucht, dann läßt sich durch Änderungen eines einzigen Bits in
Delphi-Quellcode:
if NOT Schutzfunktion then
abändern.
Darum verschllüsseln "bessere" Schutzfunktionen den eigentlichen Programmcode und entschlüsseln ihn dann zur Laufzeit.

Natürlich muß man dann auch aufpassen, dass niemand zur Laufzeit den Code einfach so ausließt und später in den Programmkopieen direkt lädt.

LTE5 10. Dez 2017 16:46

AW: SW Module mit Key schützen
 
Zitat:

Darum verschllüsseln "bessere" Schutzfunktionen den eigentlichen Programmcode und entschlüsseln ihn dann zur Laufzeit.
Das wäre meiner Meinung nach eine Diskussion werde.

mensch72 10. Dez 2017 17:55

AW: SW Module mit Key schützen
 
der zuschützende Programmcode sollte im Idealfall nur auf einem "externem" sicheren System ausgeführt werden... verschlüsselt speichern und unverschlüsselt im RAM ausführen bringt nix, wenn dann eine Tokenvirtualisierung wie bei Themida...

Wer das Hardwarekonzept nicht mag, der denke alternativ mal an eigene WebServices und RemoteProcedureCalls... dann ist der zu schützende Programmcode auch nur auf dem eigenem WebServer, nur die IO-Daten fliegen hin&her.

=> Und man sollte etwas genauer definieren, "was" man schützen will:
- nur die Verhinderung von unbezahlter (mehrfach) Nutzung
- den Programmcode an sich, also Schutz gegen echtes Debug und "ReversSource" vom Algo oder speziellen (Key)Daten
- oder "beides"

=> auch sollte bestimmt werden, ob welche Connectivität die Schutzlösung vorraussetzt
- nur online
- online und zeitweise(max wie lange?) offline
- auch 100% offline

=> letzter Punkt: was darf es Kosten?
- einmal, also Entwicklung, Implemeterung und Test
- was kostet es pro Kundenlizenz an Selbstkosten sowie bei ext. Zukauf pro Lizenz
- was wieviel ist der Kunde max. bereit "zusätzlich" zu zahlen(also z.B. einen HW-Dongle für die sichere offline Fähigkeit, oder einen OnlineKey als Backup wenn der HW-Dongle kaputt oder verloren)... und wie "verkaufe" ich ihm das damit er es "gerne" zahlt und sich nicht als böser Raubkopierer verdächtigt sieht)
- wie machen es die Mitbewerber und gibt es von bösen Leuten schon für andere oder eigenene Software "Patches" im INet oder in dafür bekannten Kreisen

scrat1979 10. Dez 2017 18:47

AW: SW Module mit Key schützen
 
Der TE möchte ja - wenn ich es richtig verstanden habe - eine einfach Möglichkeit bieten, über einen Code bestimmte Funktionen freischalten zu können. Am sichersten wäre bestimmt, die Programmfunktion überhaupt erst zu integrieren, wenn es bezahlt wird. Also sprich - neue EXE ausliefern.

Ich kann mir aber vorstellen, daß die Möglichkeit des "Crackens" in dieser speziellen Situation eher sekundärer Natur ist und es um die "einfache" Erweiterung der Programmfunktion geht. Und nicht jede Firma/Behörde etc. , die Software von Euch einsetzt, ist im Besitz von Reverse-Engeneers, welche darauf aus sind, Eure Software auszuhebeln. Aber ich weiß, selbst Skript-Kiddies können das mit den einschlägigen Tutorials mittlerweile....

Was ich eigentlich sagen möchte: Sollte der "Schutz" im engeren Sinne sekundär sein und die EINFACHE Möglichkeit, Funktionen freischalten zu können, im Vordergrund stehen, dann würde ich sehr wohl behaupten, dass eine einfache Lösung in diesem Fall durchaus Sinn macht bzw. Sinn machen könnte... über das Für- und Wider bzw. Kosten-Nutzen-Verhältnis kann nur der TE urteilen...

In diesem Sinne noch ein schönes Rest-Wochenende!

Zacherl 10. Dez 2017 19:32

AW: SW Module mit Key schützen
 
Zitat:

Zitat von LTE5 (Beitrag 1388445)
Zitat:

Darum verschllüsseln "bessere" Schutzfunktionen den eigentlichen Programmcode und entschlüsseln ihn dann zur Laufzeit.
Das wäre meiner Meinung nach eine Diskussion werde.

Ist auch nur bedingt hilfreich, wie himitsu schon angedeutet hat. Früher haben diese Protektoren einfach beim Start das komplette Binary on-the-fly im RAM decrypted und dann die Ausführung beim originalen EntryPoint fortgesetzt. Da kamen die Leute allerdings sehr schnell drauf, dass man dann einfach das (dann unverschlüsselte) Speicherabbild zur Laufzeit wieder in eine .exe dumpen konnte. Muss man gegebenenfalls noch ein paar Imports fixen, aber das ist alles kein Teufelswerk.

Modernene Schutzprogramme sind dann dazu übergegangen immer nur Teile des Programmcodes sozusagen dynamisch bei Ausführung zu entschlüsseln. Ist schonmal besser, kann aber automatisiert auch sehr einfach entpackt werden. Außerdem muss man sich vor Augen halten, dass der Crypto Key IMMER zwangsweise irgendwo im Programm enthalten sein muss. Hat man den gefunden, hat man gewonnen.

Lösungen wie Themida oder VMProtect setzen primär auf Obfuscation (= einzelne Instructions werden in Äquivalenten Code umgeschrieben und in Code versteckt, der "nichts macht") und Virtualisierung (= der Protektor erstellt eine virtuelle Maschine mit dynamisch erzeugten Instruction Set und übersetzt das Target bzw. Teile davon). Diese zwei Sachen kann man dann für den maximalen Schutz noch kombinieren und mit einigen Kleinigkeiten wie Import Redirection, Debugging Checks, etc. aufpimpen, um die Cracker noch ein wenig mehr zu ärgern :stupid: So eine VM zu reversen und den Code dann auch noch zu reassemblieren macht extrem wenig Spaß :-D

Zitat:

Zitat von mensch72 (Beitrag 1388450)
der zuschützende Programmcode sollte im Idealfall nur auf einem "externem" sicheren System ausgeführt werden... verschlüsselt speichern und unverschlüsselt im RAM ausführen bringt nix, wenn dann eine Tokenvirtualisierung wie bei Themida...

Wer das Hardwarekonzept nicht mag, der denke alternativ mal an eigene WebServices und RemoteProcedureCalls... dann ist der zu schützende Programmcode auch nur auf dem eigenem WebServer, nur die IO-Daten fliegen hin&her.

Besonders das Web-Konzept ist eigentlich die einzig wirklich sichere Lösung, aber je nach Performance- bzw. Sicherheitsanforderungen (wenn die Rechner z.b. bewusst keinen Internetzugang besitzen) nicht immer machbar. Die Wahrscheinlichkeit, dass sich jemand überhaupt die Mühe macht, einen Hardware Schutz zu umgehen, ist natürlich auch sehr gering. Ist für professionelle (Firmen-)Software sicherlich eine gute Lösung, für normale Heimanwender allerdings leider total ungeeignet.

himitsu 10. Dez 2017 19:56

AW: SW Module mit Key schützen
 
Jupp, da wird teilweise mit "Virtuellen Maschinen" gearbeitet.

Also der zu schützende Code wird in einen anderen CPU-Befehlssatz umgewandelt und zur Laufzeit in einem virtuellen System ausgeführt.
So ähnlich wie Android/iOS in einem Emulator im PC.

Man nimmt dafür "exotische" emuliterte Geräte, denn so nimmt man dem Cracker erstmal sein Wissen über sein ihm bekanntes System (hier x68, Windows und die Win32 API)
"Obfuscation durch Nichtwissen" ist zwar auch letztendlich knackbar, aber wenn jedes Programm sein eigenes virtuelles System hat, dann muß hier jemand erstmal für jeden zu knackenden Code erstmal rausbekommen wie es funktioniert, was das knacken also schon sehr erschwert.

Also wie beim OTP macht man es dem Angreifer möglichst schwer.

Zacherl 10. Dez 2017 20:07

AW: SW Module mit Key schützen
 
Zitat:

Zitat von himitsu (Beitrag 1388457)
aber wenn jedes Programm sein eigenes virtuelles System hat, dann muß hier jemand erstmal für jeden zu knackenden Code erstmal rausbekommen wie es funktioniert, was das knacken also schon sehr erschwert.

Bei VMP kann man sogar einstellen, dass im selben Programm direkt mehrere einzigartige VMs zum Einsatz kommen :lol: Ist natürlich letzten Endes auch knackbar, aber kaum jemand wird sich die Mühe machen.

TigerLilly 11. Dez 2017 07:21

AW: SW Module mit Key schützen
 
Der technische Aspekt ist schon ausführlich beleuchtet worden.
Ich glaube, man muss auch überlegen, wie viel Aufwand man selber in einen Schutz stecken möchte, denn das zu implementieren und zu warten kostet ja auch.
Und man muss überlegen, wie viel Aufwand man dem Kunden zumuten möchte.

Ganz anders betrachtet:
- Jede illegale Kopie ist Werbung, für die man nicht zahlen muss.
- Kopierschutz vermittelt dem Kunden immer eine gehörige Portion Misstrauen. Und das ist schlecht, denn wir wollen ja, dass unsere Kunden ihre guten Erfahrungen mit unserer Software weitererzählen.

RSF 11. Dez 2017 08:39

AW: SW Module mit Key schützen
 
Zitat:

Zitat von TigerLilly (Beitrag 1388463)
........

Ganz anders betrachtet:
- Jede illegale Kopie ist Werbung, für die man nicht zahlen muss.
- Kopierschutz vermittelt dem Kunden immer eine gehörige Portion Misstrauen. Und das ist schlecht, denn wir wollen ja, dass unsere Kunden ihre guten Erfahrungen mit unserer Software weitererzählen.

Was nutz diese Art von kostenlose Werbung,99% nutzt meine Software kostenlos. Wer deckt dann meine Ausgaben(Delphi, Strom, Lohn usw.)??:(
Stichwort: Misstrauen gegenüber Kunden. Ich schlisse auch meine Haustür ab wenn ich gehe, oder soll ich die besser offen lassen?
Schließlich ist keine Haustür vollkommen sicher. Oder habe ich da ein Misstrauen gegenüber meiner Mitmenschen.

Ich sichere meine Software mit einer eigenen Online-Aktivierung ab. Auch nicht vollkommen aber besser als nichts.:-D

generic 11. Dez 2017 09:05

AW: SW Module mit Key schützen
 
Ich hatte auf den letzten Foren-Tage auch über meine Erfahrungen von Themida berichtet.

Ich kann sagen ich bin zu frieden und einen Krack oder ein Seriennummerngenerator gibt es für meine Software BOMAC (noch) nicht.
Wichtig ist nur, dass du die entscheidenden Quelltextteile in die VMs auslagerst.

Was du in deinen Fall machen kannst:
Nimm die Seriennummer des Gerätes (Hardware) und verknüpfe die mit dem Softwaremodul.
Wenn die voneinander abhängig sind, dann können Kunden auch nicht untereinander die Freischaltschlüssel tauschen.

tomkupitz 11. Dez 2017 16:16

AW: SW Module mit Key schützen
 
Hallo,

danke für die Vorschläge. U.a. ist die SW -> Device - Bindung eine echte Option.

Beste Grüße

LTE5 11. Dez 2017 16:19

AW: SW Module mit Key schützen
 
Zitat:

Ich sichere meine Software mit einer eigenen Online-Aktivierung ab. Auch nicht vollkommen aber besser als nichts.
Ist das dann nicht so eine typische Software, die bei jedem, Start nach Hause telefoniert?
Was, wenn keine Internetverbindung besteht?

tomkupitz 11. Dez 2017 16:50

AW: SW Module mit Key schützen
 
Gerät steht in diesem Fall lokal am SW-PC (Usb).

Zacherl 11. Dez 2017 21:02

AW: SW Module mit Key schützen
 
Zitat:

Zitat von LTE5 (Beitrag 1388507)
Zitat:

Ich sichere meine Software mit einer eigenen Online-Aktivierung ab. Auch nicht vollkommen aber besser als nichts.
Ist das dann nicht so eine typische Software, die bei jedem, Start nach Hause telefoniert?
Was, wenn keine Internetverbindung besteht?

Kann ja auch nur einmalig aktiviert werden. Bringt allerdings so oder so auch nicht mehr als eine Aktivierung per Key. Besonders als Eigenlösung vermutlich sehr schnell umgangen, aber reicht unter Umständen ja schon, um ein paar illegale Kopien zu vermeiden.

LTE5 11. Dez 2017 21:22

AW: SW Module mit Key schützen
 
Genau wegen diesem Hin und Her Hin und Her finde ich es besser, einfach gar keinen Schutz einzubauen.

Zacherl 11. Dez 2017 21:32

AW: SW Module mit Key schützen
 
Zitat:

Zitat von LTE5 (Beitrag 1388515)
Genau wegen diesem Hin und Her Hin und Her finde ich es besser, einfach gar keinen Schutz einzubauen.

Warum? Sobald sich ein Softwareprodukt an eine breitere Masse richtet, ist Schutz meiner Meinung nach unerlässlich. Niemand hat heutzutage moralische Bedenken dein Produkt einfach kostenlos zu verwenden. Firmen werden ggfls. noch rechtliche Konsequenzen fürchten, aber Privatanwender hälst du auch damit nicht im Zaum.

Themida, VMProtect, etc. drüberjagen und gut ist. Mindestens 1000x besser, als alles was man auf die Schnelle per Hand entwickeln kann und dazu Null Aufwand. Die Anschaffungskosten lohnen sich definitiv.

LTE5 11. Dez 2017 21:44

AW: SW Module mit Key schützen
 
Zitat:

Niemand hat heutzutage moralische Bedenken dein Produkt einfach kostenlos zu verwenden.
Diese komischen Figuren die kostenpflichtige Software knacken haben auch keine moralischen Bedenken das zu machen.

Zacherl 11. Dez 2017 23:14

AW: SW Module mit Key schützen
 
Zitat:

Zitat von LTE5 (Beitrag 1388517)
Zitat:

Niemand hat heutzutage moralische Bedenken dein Produkt einfach kostenlos zu verwenden.
Diese komischen Figuren die kostenpflichtige Software knacken haben auch keine moralischen Bedenken das zu machen.

Und deshalb soll man diesen Leuten direkt alles auf dem Silbertablet servieren? Dann kannst du auch deine Wohnungstür einfach offen stehen lassen, denn wer wirklich rein will, wird auch reinkommen. Ein halbwegs guter Schutz schreckt 99% der Cracker ab, da der "Nutzen" (= kostenlose Software oder Szene-Bekanntheit) den Zeitaufwand einfach nicht rechtfertigt. Du als Entwickler kaufst dahingegen für einen akzeptablen Preis eine Schutz-Lösung und investierst nach dem Compilen nochmal ca. 30 Sekunden, um besagte hinreichende Sicherheit zu erlangen.

RSF 12. Dez 2017 09:50

AW: SW Module mit Key schützen
 
Zitat:

Zitat von Zacherl (Beitrag 1388513)
Zitat:

Zitat von LTE5 (Beitrag 1388507)
Zitat:

Ich sichere meine Software mit einer eigenen Online-Aktivierung ab. Auch nicht vollkommen aber besser als nichts.
Ist das dann nicht so eine typische Software, die bei jedem, Start nach Hause telefoniert?
Was, wenn keine Internetverbindung besteht?

Kann ja auch nur einmalig aktiviert werden. Bringt allerdings so oder so auch nicht mehr als eine Aktivierung per Key. Besonders als Eigenlösung vermutlich sehr schnell umgangen, aber reicht unter Umständen ja schon, um ein paar illegale Kopien zu vermeiden.

Seit Umstellung in meine eigene Online-Aktivierung sind auch die Key-Generatoren (incl. Programveränderungen)für meine Software im Internet verschwunden.
Das liegt nicht an meiner Verschlüsslung oder Umsetzung sondern an Aufwand und Nutzen. Klar, es gibt keinen absoluten Schutz vor Raubkopien aber man sollte es so schwer wie nötig machen. Auch ein ständiges Ändern der Schutzart bei jeder Programmversion erhöht den Aufwand für illegale Kopien.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.

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