Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.
Seite 2 von 3     12 3      

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