Lizenzvergabe & Aktivierung & ct.

Übersicht Sonstiges Smalltalk

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

KnorxThieus

Betreff: Lizenzvergabe & Aktivierung & ct.

BeitragDo, Mai 09, 2013 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,


nicht dass ich daran, denke sowas heute schon zu bauen oder die fachlichen Können hätte, aber mal interessehalber:

Wie wird eigentlich so ein System für Lizenzvergabe, Aktivierung und so weiter gebaut?
Version: BlitzPlus / Blitz+
 

feider

ehemals "Decelion"

BeitragFr, Mai 10, 2013 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zuerst definierst du dir, was das System genau tun soll, dann definierst du wie es umgesetzt werden soll.
Ein allgemeines System gibt es nicht.

Du könntest z.B. ein System für gültige Keys erstellen - eine Möglichkeit dafür wäre es, die zweite Hälfte des Keys aus der ersten zu errechnen und so zu sehen, ob das Programm gültig ist. Kann aber über reverse Engineering leicht geknackt werden.

Du könntest auch das Anmelden per Benutzerkonto und dauerhaftes online bleiben erforderlich machen - damit wirst du jedoch deutlich viele Nutzer vergraulen und das Spiel im Fall eines Serverausfalles unspielbar machen.

lg
feider

Addi

BeitragFr, Mai 10, 2013 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest es aber auch so machen, dass du ein Setup erstellst und dieses dann überprüfen lässt, ob z.B. der gekaufte Schlüssel korrekt ist und erst dann installiert.
Für dieses Vorgehen gibt es Setup-Programme, mit denen du z.B 100 Schlüssel generieren kannst, welche das, mit dem selben Programm, erstellten Setup dann auch akzeptiert.

Mir fällt gerade der Name meines Beispiels nicht mehr ein, kommt aber noch per Edit, wenns mir wieder einfällt.
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62

KnorxThieus

BeitragFr, Mai 10, 2013 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja,
    1. Einmal hat Mathias-Kwiatkowski mir per PN was erklärt, ergänze ich hier nur damit das diskutiert werden kann:
    Mathias-Kwiatkowski hat Folgendes geschrieben:
    kommt drauf an was du vorhast... z.b. mmo, da liegen die liziensen einfach auf ein server.
    du sendest deinem kunden irgendeine liziens zu und er gibt sie ein . das wird mit der server verglichen, ob nich vll schon vergeben ist... ect.

    bei einem offline game. da liegen alle liziensen meistens in einem type,
    also z.b.

    type TLiziens
    field serial$


    dann kannste die die der benutzer hat mit dem type vergleichen, und gut is.

    jedenfalls denke ich das es so funtzen sollte.
    wobei liziens wäre ehr bei mmo interessant.
    bzw wenn du überhaupt vorhast mit nem server zu verbinden, und seis nur zum zweck der vergleichbarkeit.

    2. Gibt es nix ohne Server, irgendein vorgefertigtes System, einen Lizenzverwaltungsanbieter...?
    Kosten scheuen!

    Außerdem wäre die Weise eines Kopierschutzes wie bei manchen DVDs erfahrenswert!


Mfg!
Version: BlitzPlus / Blitz+

Xeres

Moderator

BeitragFr, Mai 10, 2013 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Addi hat Folgendes geschrieben:
Für dieses Vorgehen gibt es Setup-Programme, mit denen du z.B 100 Schlüssel generieren kannst, welche das, mit dem selben Programm, erstellten Setup dann auch akzeptiert.
Lässt sich der Schlüssel dieses Setup Generators denn nicht durch reverse engineering knacken? Wenn das Programm nur bekannt genug ist, gibt es auch sicher Cracks dafür - darum würde ich selber programmieren vorziehen.
Keys sind auch nur für einen Zweck geeignet: nach zu vollziehen, wer ihn ins Internet gestellt haben könnte.

Ich würde mir sowas generell sparen... aber ich will auch kein Geld mit Spielen verdienen - ordentlicher Support ist nur nervig, den will ich nicht bieten müssen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

KnorxThieus

BeitragFr, Mai 10, 2013 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es einen Anbieter, der solche Keysachen übernimmt?
Version: BlitzPlus / Blitz+
 

feider

ehemals "Decelion"

BeitragFr, Mai 10, 2013 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt, ein einfacher Keygenerator ist sehr sehr schnell programmiert. Ich glaube nicht, dass es Firmen gibt, die sich auf sowas spezialisiert haben. Wenn, dann wirst du eher Kundengängeleien wie SecuRom oder so erhalten.

DAK

BeitragFr, Mai 10, 2013 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Android gibt dir sowas von haus aus. Aber hald nur, wenn deine App auf Android rennen soll.

Was viele machen (wie z.B. Milkshape3D) ist folgendes: Du kaufst deinen Key online und gibst dabei Name und Email oder so ein. Dafür kriegst du den Key. Der wird dabei zufällig vom Server erstellt.

Wenn du den Key eingibst (also nur ein Mal bei der Installation), checkt dein Programm mit dem Server, ob der Key mit Name und Email übereinstimmt. Wenn dem so ist, dann schickt der Server sein OK zurück und streicht den Key wieder von seiner Liste oder markiert ihn als verbraucht.

Problem: Wenn der User z.B. seinen Computer neu aufsetzt, muss er irgendwie den Key wieder anfordern können, was dann wieder dazu führen könnte, dass er es einfach auf mehreren Computern installiert.

Außerdem wird auch sowas leicht geknackt indem z.B. ein falscher Server die Verbindung abfängt und darauf standardmäßig mit einem OK antwortet oder die Abfrage selbst schon ausgeschaltet wird.

Um Raubkopien kommst du ab einem bestimmten Bekanntheitsgrad deines Programmes nimmer rum, sorry.
Gewinner der 6. und der 68. BlitzCodeCompo

KnorxThieus

Betreff: Und eine direkte Abfrage?

BeitragSa, Mai 11, 2013 8:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Und geht es auch, dass ich in meinem Programm eine direkte Abfrage einfüge, etwa so:
BlitzBasic: [AUSKLAPPEN]
Select enteredkey$ ;aus Datei eingelesen oder Registry
Case "G16KFG-P9GBG4-167KL4-3L944V", "123ABC-QWER5T0-O0O034-FGHN92";und eben noch weitere Keys EINER BESTIMMTEN ANZHAL
keycorrect = True
Default
;Ist der Key falsch
End Select

Also nur ein begrenzte Anzahl Keys ermögliche, z.B. hundert?
Oder kann irgendwer das auslesen? Und wie hoch stehen die Chanzen, das jemand das errät?

Mfg,
KnorxThieus
Version: BlitzPlus / Blitz+

Hummelpups

BeitragSa, Mai 11, 2013 9:39
Antworten mit Zitat
Benutzer-Profile anzeigen
die Keys als Strings in der Exe zu speichern wird wohl kaum eine sichere Methode sein.
Ich empfehle, wie ich es bei meinem Kiosk Programm auch mache, eine komplexe
methode, aus einem Schlüssel eine Zahl zu errechnen die bei jedem Schlüssel eine bestimme
reihenfolge von nummern oder was auch immer ergibt.

Es gab damals einige SPiele, Denen wurde jede Zahl und jedem Buchstaben die
Zahl X zugeordnet. DIe Quersumme jedes "Key"-Bündels musste gleich sein.

Bsp:

1234-4321-a234

wenn hier a für 1 steht. Hier wird einfach die Quersumme jeder Gruppe ermittelt und ist diese
bei jeder Gruppe gleich, ist der Schlüssel gültig.

Das ist nur ein vorschlag um das System zu erklären, vernünftige algos sind hier natürlich
interessanter

Grüße
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

count-doku

BeitragSa, Mai 11, 2013 9:44
Antworten mit Zitat
Benutzer-Profile anzeigen
zu dem String im Code: habe gerade einfach mal deinen kleinen Code kompiliert, die Exe mitm Notepad geöffnet und nach dem key gesucht. Ergebniss: steht als Klartext drin

Ist also in der Tat eher ungünstig.

lg,
Count-Doku

KnorxThieus

BeitragSa, Mai 11, 2013 9:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@Hummelpups:
Danke, interessant! Da kann man schöne Komplikationen bauen...
@count-doku:
Uff Surprised , ist ja heftig! Und ich habe einige eigene EXEn mal mit meinem Standard-Passwort geschützt... Shocked

Also würde ich den komplexesten Code durch komplexeste Algorithmen geschützt versehen...
dennoch, ich hab mir das alles noch viel komplizierter vorgestellt. Naja, lange würde sowas bei Microsoft oder Appel oder so auch nicht halten...
Version: BlitzPlus / Blitz+

DAK

BeitragSa, Mai 11, 2013 10:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal die Wikiartikel zu Prüfziffer und Prüfsumme an. Vielleicht hilft dir das was.

Besser wärs noch, wenn du das Ganze mit Hashes machst.

1) Du machst dir eine Liste an Keys, die gehen sollten

ABCD-EFGH-IJKL-MNOP
..

2) Du errechnest dir zu jedem der Keys einen Hash (z.B. MD5). Dazu sollte es geeignete Funktionen schon im Internet geben, wenn nicht, dann zumindest Pseudocode, aus dem du dir dann deine eigene MD5-Funktion schreibst.

md5(ABCD-EFGH-IJKL-MNOP) = 57cdb3670e3b31fcdc3070311db27d91 (in Hex)

3) Zu jedem der Hashes addierst du einen Salt um dafür zu sorgen, dass man den Key nicht per Rainbow-Table aus dem Hash rausbekommt.

57cdb3670e3b31fcdc3070311db27d91 + 0faa12971982492fffaa12971982492f = 6777c5fe27bd7b2cdbda82c83734c6c0
(Den Salt kannst du beliebig wählen, muss aber gleich bleiben)

Diese Ergebnisse speicherst du in deinem Programm. Die könnte man jetzt auch lesen, bringt nur nix, weil man aus denen sich den Key nicht berechnen kann.


Gibt ein User jetzt einen Key ein, dann machst du genau das Gleiche wie oben und vergleichst dann, ob das Ergebnis, was du vom eingegebenen Key kriegst, mit dem gespeicherten Hash übereinstimmt. Passt's dann passt's, passt's nicht, dann nicht.


Vorteile: Keine Serververbindung notwendig; ohne einen Key quasi nicht knackbar, auch nicht durch eine Rainbow-Table.
Nachteil: Sobald irgendwer einen passenden Key gekauft hat, und den im Internet zur Verfügung stellt, war's das mit deinem Schutz, da es nicht möglich ist, zu überprüfen, ob schon irgendwer sonst den Key verwendet hat. Aber zumindest einen ersten Käufer sicherst du dir damit. Außerdem hast du nur eine bestimmte Menge möglicher Keys, nämlich so viele, wie du deinem Programm mit gibst. Außerdem wird bei jedem Key, den du eingibst, dein Programm länger. Jeder Hash hat 128 Bit also 16 Byte, wenn du also 10.000 Keys mit gibst, dann wird dein Programm dadurch um 160kb mindestens größer (wenn du es mit Swich Case machst, dann wird es noch wesentlich mehr).



Die Prüfsumme ist auch noch eine Möglichkeit, die dir ähnliche Vor- und Nachteile bietet, wie die Hashes. Unterschiede: Du hast keine Begrenzung, wie viele Keys es gibt, das Programm wird nicht größer, je mehr Hashes du hast, dafür sind Keygens möglich!

Ein gutes Beispiel für eine Prüfziffer ist der EAN. Hierbei wird zuerst abwechselnd eine Ziffer der Artikelnummer mit 1 und die nächste mit 3 multipliziert und alle Nummern aufaddiert. Das Ergebnis davon wird dann Modulo 10 genommen. Die Prüfziffer ergibt sich durch 10 minus diesem Zwischenergebnis.

Beispiel: die Prüfziffer für 12345 würde sich so errechnen lassen:
1*1 + 2*3 + 3*1 + 4*3 + 5*1 = 27
27 mod 10 = 7
Prüfziffer = 10-7 = 3

Das Ergebnis würde dann so ausschauen: 123457

Sicherer wird das dann, wenn man eine mehrstellige Prüfziffer macht, die sich aus mehreren solcher Schritte ergibt. Zum Beispiel wäre die erste Prüfziffer wie beim EAN, und die zweite macht man dann mit

10 - ((1*3 + 2*5 + 3*7 + 4*11 + 5*13 + 7*17) mod 10) = 10 - (262 mod 10) = 10 - 2 = 8

=> 1234578

Wichtig: zum Multiplizieren immer Primzahlen verwenden.

Dabei gilt: je mehr solcher Schritte man macht (immer die neue Prüfziffer hinten anhängen), desto sicherer wird es.
Gewinner der 6. und der 68. BlitzCodeCompo

Lord Stweccys

BeitragSa, Mai 11, 2013 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube allerdings, dass man selbst den schönsten Mechanismus mit einem Disassemblierer und Assemblerkenntnissen relativ einfach "umschiffen" kann.

Hummelpups

BeitragSa, Mai 11, 2013 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
außer das so ein Algo in Asm ma locker 2-3 Seiten lang ist und du erstmal
die richtige Stelle im Code finden musst, ists natürlich gaaaaaanz easy zu knacken Laughing
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

Lord Stweccys

BeitragSa, Mai 11, 2013 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach, ich denke das geht schon. Das ganze ist ja auch nichts weiter als eine Funktion, die aufgerufen wird. Das dürfte jetzt nicht so schwer sein. Die einzige Hürde, die ich mir vorstellen kann, ist, dass Blitz3D et.c nicht in Maschinensprache kompilieren. Wenn das ganze dagegen in echter Maschinensprache ist, würde ich das gerne mal ausprobieren.
 

feider

ehemals "Decelion"

BeitragSa, Mai 11, 2013 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist nicht "gaaanz easy" zu knacken, aber ich kenne genug Leute, die das als Herausforderung sehen.
mit so einem Kopierschutz erreicht man nur, dass die zahlenden Kunden den stress des Eingebens haben / Angst haben müssen, den Key zu vielieren und die Leute, die sich das Spiel illegal holen, keine Probleme haben.

Man sollte zahlenden Kunden nicht den Zugang zu einem Spiel erschweren.

KnorxThieus

Betreff: Uff, zu kompliziert...

BeitragSa, Mai 11, 2013 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Puh... also, @DAK: Das übersteigt meine Kentnisse ja jetzt doch ums Vielfache...
Wikipedia in Ehren, aber wenn ich ein Wort pro Satz googlen muss und dort dann wiederum, verstehe ich es trotzdem nie... Einfach noch zu kompliziert.
Ähm... du hast nicht zufälligerweise einen fertigen Quellcode, wo ich nur noch meine "geheimen" Zahlen eintragen müsste, den zur Verfügung stellen würdest... Razz Wäre toll!

@Lord Stweccys: Was ist denn eine Maschinensprache?

Em Ef Geh!
Version: BlitzPlus / Blitz+

d-bug

BeitragSa, Mai 11, 2013 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
@Lord Stweccys: Was ist denn eine Maschinensprache?

Ich brech weg... Very Happy ... Google soll da helfen.

Zitat:
Ähm... du hast nicht zufälligerweise einen fertigen Quellcode, wo ich nur noch meine "geheimen" Zahlen eintragen müsste, den zur Verfügung stellen würdest... Wäre toll!

Ich bitte inständig darum mal das Gehirn einzuschalten. Fertigen Quellcode erbetteln ist wirklich extrem unwürdig und gehört verboten.

(landet zwar gleich im Trash, aber das war es mir wert!)

KnorxThieus

BeitragSa, Mai 11, 2013 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
d-bug hat Folgendes geschrieben:
Zitat:
@Lord Stweccys: Was ist denn eine Maschinensprache?


Ich brech weg... ... Google soll da helfen.

Ah, Maschinensprache wird direkt vom Prozessor ausgeführt. Aber warum so umständlich?

d-bug hat Folgendes geschrieben:
Zitat:
Ähm... du hast nicht zufälligerweise einen fertigen Quellcode, wo ich nur noch meine "geheimen" Zahlen eintragen müsste, den zur Verfügung stellen würdest... Wäre toll!


Ich bitte inständig darum mal das Gehirn einzuschalten. Fertigen Quellcode erbetteln ist wirklich extrem unwürdig und gehört verboten.

(landet zwar gleich im Trash, aber das war es mir wert!)


Ja, ich weiß, selbst lernen und begreifen. Aber das erscheint mir nun viel zu komplex und ich möchte ungern 10 Jahre auf meinen ersten Verkauf warten! Rolling Eyes
Wenn's nicht so kompliziert wäre, wie durch DAK erklärt, hätte ich es vielleicht versucht...
Aber sag selbst, glaubst du etwa, dass ich das in unmittelbarer Zeit erlernen könnte?

MfG,
KnorxThieus
Version: BlitzPlus / Blitz+

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group