Laden...

WinApp durch eine Seriennummer schützen

Erstellt von Tossi vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.467 Views
T
Tossi Themenstarter:in
37 Beiträge seit 2006
vor 16 Jahren
WinApp durch eine Seriennummer schützen

Hallo,
ich möchte meine WinApp durch eine Seriennummer schützen.
Wie stelle ich es an, das ich mir die SN generieren kann?

Danke für Eure Hilfe

Tossi

A
138 Beiträge seit 2007
vor 16 Jahren

Hallo,
du musst einen speziellen/geheimen Algorithmus verwenden, der deine Seriennummer berechnet, bzw. der überprüft, ob deine Seriennummer stimmt.
Dann in der Application wendest du den Algorithmus auf die Seriennummer an und überprüfst, ob dass Ergebnis 'richtig', also dem vordefinierten Wert entspricht.

Ein solcher Algorithmus könnte z.B. die Quersumme sein und dann überprüfen, ob die Quersumme der Seriennummer z.B. 88 ist.

Zum Berechnen von gültigen Seriennummern dann den Algorithmus mehr oder weniger Rückwärts gehen. Du hast das Ergebnis 88 (die Quersumme) und berechnest daraus dann gültige Seriennummern.

Möglich wäre es, solange Zufallsziffern auszugeben, bis man eine Quersumme von 88 hat.

Pseudocode:


int quer = 88;
while(quer > 0) {
    int rand = Random(0,9); //Zufallszahl zwischen 0 und 9
    if(rand <= quer) {
       quer -= rand;
       serial += rand.ToString();
    }
}

Dies würde aber Seriennummer unterschiedlicher Länge herrausbringen, was man aber auch leicht anpassen kann, so dass alle Nummern die gleiche Länge haben.

Natürlich solltest du nicht die Quersumme nehmen, sondern einen komplexeren Algorithmus, der vorallem geheim bleiben muss.
Aber evt. hilft dir das ja weiter.

Edit:
PS: Hashtables (selber programmierter), wenden ja auch einen Verfahren an, um von einem String eine Zahl zu erhalten.
Soetwas könnte man auch als Algo. für deine Seriennummer verwenden.

T
Tossi Themenstarter:in
37 Beiträge seit 2006
vor 16 Jahren

Danke für den Tip.
Werde ich gleich mal versuchen.

Tossi

M
1.439 Beiträge seit 2005
vor 16 Jahren
G
58 Beiträge seit 2007
vor 16 Jahren

Einen geheimen Algorithmus gibt es zumindest in C# nicht, da man sich den produzierten Bytecode immernoch gut anschauen kann.

2.760 Beiträge seit 2006
vor 16 Jahren

Naja, ich denke wenn er seinem Programm schon eine SN spendiert dann wir er auch einen obfuscator einsetzen oder einsetzten wollen.

182 Beiträge seit 2007
vor 16 Jahren

Hi,

bin zwar noch ein anfänger in c#, will aber natürlich ein wenig meinen Programmierhorizont ständig erweitern.

Bin grade mit einem Bekannten dabei eine kleines Programm zu schreiben und bei der Planung auch auf das Problem mit dem Schutz gestoßen.

Meiner Meinung nach ist der schutz durch eine seriennummer einfach so nicht wirklich sicher.


/Siehe Microsoft Windows./

Also wenn ich das richtig verstanden habe, ist das ziel doch einen schutz vor unberechtigter nutzung bzw. Installation. ODER ??

du musst einen speziellen/geheimen Algorithmus verwenden, der deine Seriennummer berechnet, bzw. der überprüft, ob deine Seriennummer stimmt.
Dann in der Application wendest du den Algorithmus auf die Seriennummer an und überprüfst, ob dass Ergebnis 'richtig', also dem vordefinierten Wert entspricht.

Ein solcher Algorithmus könnte z.B. die Quersumme sein und dann überprüfen, ob die Quersumme der Seriennummer z.B. 88 ist.

Zum Berechnen von gültigen Seriennummern dann den Algorithmus mehr oder weniger Rückwärts gehen. Du hast das Ergebnis 88 (die Quersumme) und berechnest daraus dann gültige Seriennummern.

Möglich wäre es, solange Zufallsziffern auszugeben, bis man eine Quersumme von 88 hat.

Problem hierbei ist es doch, wenn mich nicht alles täuscht, dass die Seriennummer zusammen mit der App. weitergegeben werden kann und zack , schon scheiße.

Andere Möglichkeit : ( Lizenzdatei )

Eine Lizenzdatei die mitgegeben wird oder per e-mail zugeschickt wird. Hier aber selbes Problem, man kann die lizenzdatei weitergeben.

weitere Möglichkeit : (Online registrierung)

Die App. erstellt durch einen algo. , einer mitgelieferten seriennummer und einer Hardwarenummer z.b.: Mac-Adresse ( einmalig ) eine einmalige seriennummer, die auf speziell diesen rechner abgestimmt ist.
es wird entweder durch die App. eine Verbindung zu einer Onlinedatenbank erstellt und anhand dieser Seriennummer eine Aktivierung durchgeführt. zusatzlich wird die einmalige erstellte nummer von der App und die mitgelieferte nummer in der Datenbank gespeichert um zu speichern das diese App auf diesem Prog installiert wurde.

wenn diese App nun auf einem anderen rechner installiert wird, wird online festgestellt, dass diese version mit dieser mitgelieferten nummer schon auf einem anderem rechner installiert ist.


Problem hier ist:

  1. Was ist wenn der Rechner auf dem Installiert wird nicht im Internet ist ?

Lösung : Wenn keine Internetverbindung vorhanden oder Internetconnect ist gescheitert, kann die erstellte nummer von der App ausgegeben werden oder in eine Textdatei gepackt werden und an einem anderem rechner, der im internet ist, manuell in einer z.b.: php seite zur lizensierung bzw aktivierung eingegeben werden. die php-seite erstellt die neue nummer und mann latscht wieder zum ersten rechner um diese einzugeben.

  1. Was ist wenn der scheiss rechner auf dem die App installiert und aktiviert ist kaputt geht oder grade die hardware von der die Mac-Adresse genommen wurde getauscht wird ??

Lösung : ????? Keine Ahnung


Meiner meinung nach beste und sicherste Lösung einen Hardwareschutz wie ein USB HASP-Dongle, ohne dem die App nicht startet.

z.B.: http://www.alladin.de/

Falls ich das Thema hier falsch aufnehme bitte ich um entschuldigung.

Gruß
Inek

664 Beiträge seit 2005
vor 16 Jahren

Original von inek
weitere Möglichkeit : (Online registrierung)

  1. Was ist wenn der Hersteller nicht mehr existiert, ich aber meine Software gerne weiterverwenden würde 😉

Bei der ganzen Thematik sollten man die Verhältnismäßigkeit des Aufwandes, den man Treiben muss um eine praktikable Lösung ( sei sie nun gekauft oder selbst gestrickt ) zu Erhalten, nicht aus den Augen verlieren. Bei den meisten Lösungen wird eben leider nicht der "bestraft" der sich die Software irgendwie beschafft sondern der, der dafür bezahlt hat.

T
219 Beiträge seit 2006
vor 16 Jahren

Hallo,

ich schütze meine Software mit .NET Reactor bzw. auch mit Dongles, falls gewünscht. Dazu gibts auch noch einen extra Thread hier, bei dem lang über die verschiedenen Dongles diskutiert wurde.

Lizenzen vergebe ich nicht hardwarebasiert, sondern lege Namen und Adresse im Lizenzcode ab. Das kann der Nutzer auch im Programm sehen.

Das ist kein 100% iger Schutz, aber die Hemmschwelle ist recht hoch die Lizenz weiter zu geben. Falls der Rechner kaputt ist, steht immer noch der Lizenzcode zur Verfügung und kann neu genutzt werden.

Ab und an wechsele ich bei Major-Versionen den Masterkey zur Verschlüsselung, dann passen die alten Lizenzen nicht mehr. Bietet sich dann an, wenn Updates Geld kosten sollen.

Solange man nicht komplizierte Lizenzmodelle verfolgt, ist dies aus meiner Sicht ein gangbarer Weg und auch dem Nutzer gegenüber fair.

Das Entwickeln neuer Schutzmechanismen halte ich für mich persönlich wenig sinnvoll, das können andere besser, in dieser Zeit kann ich besser Kundenaufträge ausführen und etwas Geld in die Kasse kriegen.

Nur meine Sicht -)

Thomas

A
138 Beiträge seit 2007
vor 16 Jahren

Hallo,

Original von inek
Problem hierbei ist es doch, wenn mich nicht alles täuscht, dass die Seriennummer zusammen mit der App. weitergegeben werden kann und zack , schon scheiße.

Dies ist ein Problem, welches jede Software hat, die ausschließlich Seriennummern verwendet. Bis WinXP konnte man auch einfach die Windows CD weitergeben, zusammen mit der Seriennummern und schon lief es. Natürlich ist soetwas nicht legal, einen (offline)-Schutz gibt es dagegen kaum, ein Hardware-Dongle wäre die einzige Lösung, die keinen Onlinezugang erfordert bzw. keine Telefonregistierung.

und einer Hardwarenummer z.b.: Mac-Adresse ( einmalig )

Man kann die MAC-Adresse spielend leicht beliebig verändern, so dass man dann eben die Seriennummern + MAC-Adresse weitergeben muss.

Dann lieber:
How to retrieve REAL Hard Drive Serial Number

Zu deinen Problem, dies ist eben der Nachteil von der Online-Registierung:

  1. Was ist wenn der Rechner auf dem Installiert wird nicht im Internet ist ?

Jede Menge verärgerter Kunden oder alternativ eine teure (für dich teure) Telefonregistierung anbieten, wie bei WinXP.

Zu 2:
Ich mein bei WinXP ist es so gelöst, dass man pro Seriennummern sich nur 3 mal Online-Registieren kann mit 3 verschiedenen Hardware-Seriennummern (?) und danach dann für die Seriennummern nur noch die Telefonaktivierung funktioniert.

Wie man Vordermann bereits sagte, es gibt viele Probleme bei der Online-Registierung und für kleine Projekte nicht verhältnismäßig.

182 Beiträge seit 2007
vor 16 Jahren

Ich wollte mit meinem Beitrag auf jedenfall Tossi sagen, das in meinen augen ein schutz allein durch ne normale seriennummer nicht wirklich sinnvoll ist. dann ist auch gar kein schutz ausreichend.

Original von Tossi
Hallo,
ich möchte meine WinApp durch eine Seriennummer schützen.
Wie stelle ich es an, das ich mir die SN generieren kann?

Danke für Eure Hilfe

Tossi