C# Frage bez. Lizenzierung eines eigenen Programmes.

Kampfwurst Hugo

Lieutenant
Registriert
Jan. 2010
Beiträge
583
Hallo

Ich habe folgende Frage:

Ich habe nun einen eigene Software für das Drucken von ID Karten erstellt. Nun möchte ich verhindern das wenn ich die Software auf einem PC installiere die von dort kopiert werden kann.

Ich habe mir da folgendes ausgedacht.

Ich erstelle einen Key der aus z.B CPU-ID, MAC Addresse, Bios Seriennummer... besteht.
http://www.codeproject.com/Articles/28678/Generating-Unique-Key-Finger-Print-for-a-Computer

Diesen "String" verschlüssle ich per AES und lege ihn in einer Datei ab die im Verzeichnis liegen muss wo die exe Datei liegt.
Beim Programmstart lese ich den aus und schaue ob der "String" entschlüsselt wiedern den Key ergiebt.

Ist das so sinnvoll???

LG Christoph
 
Du willst dir also einen eigenen Kopierschutz bauen.
Kannst du machen, aber du weißt schon wie gut ein Kopierschutz funktioniert?

Du musst dann in deinen Lizenzbedingungen auch reinschreiben daß diese Software nur auf diesem PC laufen darf. Und sobald der User eben ein neues Mainboard, neue CPU, neue Netzwerkkarte (welche MAC der ~5 Netzwerkkarten willst du nehmen?) das Programm nicht mehr geht. Der User wird dann sehr erfreut sein.
 
Nein bzw. nur bedingt, da Du zum Verschlüsseln den Private-Key in deiner Anwendung hinterlegen musst (außer Du erstellst die "Zertifikate" offline, bei dir selbst). Dort kann er jedoch relativ einfach wieder ausgelesen/überschrieben werden.
Effektiver wäre wohl ein Online-Zwang mit Lizenz-Check zur Laufzeit. Ob Du das deinen Kunden jedoch antuen möchtest …
 
du programmierst in c# und denkst allen ernstes über einen kopierschutz nach?

.net reflector und jeder hat den quellecode deines programms in 5 sekunden, inklussive deines "kopierschutzes".
wenn du so etwas halbwegs ernst in betracht ziehst wirst du um eine sprache die native code erzeugt + kommerziellen protector mit vm nicht herumkommen, zumindest die script kiddies kannst du damit aussperren.
 
Wenn dir das know how fehlt etwas zu sichern denk einfach drann da draussen gibts genügend Cracks die das reworken können.

Der Aufwand steht eh entgegen dem Nutzen ... und ich glaub auch solche Etiketten Programme gibts schon zu hauf.
 
ich weis das ich mein Programm "Obfuscaten" muss. So wirds bedeutend schwerer an den Quellcode zu kommen. ;-)
 
Was du schreibst ist so möglich damit dies wirklich sicher ist schlage ich folgende Vorgehensweiße vor:

Du kannst eine Anwendung mit einem Codesigning Zertifikat signieren und die Signierung prüfen.
Bei einem Signierverfahren brauchst du zur Verifizierung NICHT den gleichen Schlüssel mit dem du die Signatur erstellst (aka Private key) sondern hast einen Zweiten schlüssel (aka public key) für das Verifizieren der Signatur.

Nun nimm einfach die Id des Zielcomputers in den Sourcecode mit auf und überprüfe ihn beim starten der Anwendung.
 
Bei größeren Projekten machen auch USB-Dongles Sinn, bei solch kleinen Projekten sollte man eher an die Zahlungsmoral des Kunden appellieren. Mit Werbeeinblendungen bei nicht lizensierter Software kann man nicht nur einen Anreiz zum Kauf der Software schaffen, sondern auch noch etwas Kleingeld verdienen. Zur Lizensierung selbst macht deine Idee schon Sinn, absolute Sicherheit gibt es sowieso nicht.
 
Ein Crack wird an dem Punkt ansetzen wo die Überprüfung stattfindet, dann den Programmfluss umleiten damit es immer erfolgreich ist. Somit ist alles zwischen Abfrage und Erfolg vergebliche Mühe.

Wenn du sowas verhindern willst, musst schon mehr Grips reinstecken.
Schau dir Softice an, das hält das Programm an einer bestimmten Stelle an und man kann an den Assembler Befehlen sehen was passiert und wohin gesprungen wird.
 
Zuletzt bearbeitet:
hm ... vergiss es auch die 5€ Programme werden geknackt ..
 
Supermoto schrieb:
Alles richtig. Aber kein Mensch crackt ein Programm, das 5,- € kostet. ;)

Wenn die Zeit zur Entwicklung eines guten Kopierschutzes teurer ist als 5 Euro lohnt es sich nicht, sich die Arbeit zu machen. Problem gelöst.
 
Meh, sowas hab ich auch mal gemacht. Überleg dir was besseres ;)
Am sinnvollsten ist es dabei bestimmte Aufgaben/Berechnungen auf einem eigenen Server auszulagern, damit die Lizenzierung und die damit verbundene Funktion zugewiesen bzw. kontrolliert werden kann.

Ich sag nur CodeDOM: http://stackoverflow.com/questions/...ly-compile-and-execute-c-sharp-code-fragments

Entsprechende Abschnitte sendest du nach Authentifizierung über ein kleines PHP Interface mit Checks (HWID etc.) einfach zurück (POST; evtl. encrypted).

Edit: Am Beginn jeder Funktion das Datum von extern checken, damit man vorgeladenes nicht ausm RAM recyclen kann (bzw. Snapshots) - damit ist die ganze Geschichte relativ sicher.

mfg,
Max
 
Zuletzt bearbeitet:
Zurück
Oben