Programm mit Serien-Key schützen.

  • VB.NET

Es gibt 39 Antworten in diesem Thema. Der letzte Beitrag () ist von TS-Development.

    bplaced hat auch keine.
    Ich möchte ja nur was hochladen.
    Wenn du schon auf TS-DEvelopments Filehoster verweist, solltest du auch einen Link dazu geben -.-
    Besser wäre wie gesagt aber immer noch was im Stil FTP-Verbindung zu bplaced aufbauen.
    Warum soll ich dir einen Link dazu geben? Kannst du nichts alleine machen? Wirst doch wohl auf Off-Topic gehen können und dort den Thread raussuchen können. Und wenn du jetzt nur für die Leute hier etwas hochladen möchtest, ist TS-Developements Hoster doch das richtige. Und ich denke, er freut sich dann sicher auch, wenn der Hoster von dir verwendet wird ;)
    Die Gefahr besteht immer, das das Verfahren zur Sicherung des Programms "geknackt" wird. Aber normalerweise benutzt man solche Schutzmechanismen nur für Kommerzielle Software (meiner Meinung nach und wer kommerzielle Software schützen möchte muss sich eben eine ausgefeilte technik ausdenken und diese auf Beständigkeit überprüfen. Also ich würde entweder das Risiko eingehen oder erstmal ziemlich viel Zeit in die "Sicherung" investieren.
    Aha oke....

    Habe einen Youtube Downloader programmirt.
    Den will ich schützen.
    daher war gedacht eine Online Dtenbank in form einer Free homepage.(oder im programm selbst)
    Da werden 20-30 Key´s gespeichert.

    und ds programm soll diese dn vergleichen und wenn er einen treffer hat, soll der Key us der Datenbnk gelöscht werden.

    und wenn es einmal richtig wr soll der Key niewieder bei dem Bentzer kommen.

    If Abfrage geht zwar ist auch einfach , aber die komtm dan ja immer und immer wieder.
    Hier mal eine Erleuterung wie ich meine Programme schütze.
    Es soll nur ein Denkanstoß für Leute sein, die hier regelmäßig fragen und Ideen suchen!



    hier mal zwei möglichkeiten wie ich meine Programme mit PasswortSchutz bzw. Kopierschutz versehe.
    Eigentlich handelt es sich nur um Kopierschutz.

    1. Möglichkeit
    Habt Ich eine Internetseite oder eine Möglichkeit einen TextString irgendwo abrufbar hinzulegen.
    Dabei ist es egal ob er verschlüsselt ist oder nicht.
    Dann mache ich folgendes:
    1. Ich implementiere in meinem Programm
    - eine abfrage auf die Serien Nr. des Prozessors oder des Bios oder auch kombiniert. nach belieben
    - ein eMail (nur senden) Programm
    2. Startet der User das Programm, wird die SerienNummer(n)des PC ausgelesen und an meine eMail Adresse gesendet.
    a- Abfrage ob die Serien Nr. freigeben ist !
    b- wenn nein dan Application.Exit
    c- wenn ja, dann startet das Programm.
    Nun habe ich die Möglichkeit, die empfangene Serien Nr. auf meiner Internetseite zu hinterlegen.
    Gehen wir zurück zu Punkt 2.a
    Hier füge ich nun eine kleine abfrage durch, ob die SereienNr auf der Internetseite hinterlegt ist ?
    - dann wieder schritt 2.a bzw. 2.b

    3. Ist die Datei auf der Internetseite zu finden dann
    - holt das Programm sie
    - verschlüsselt sie (nach einem verfahren, von Dr.Fleischer msdn) ich sage, (fast) unmöglich zu knacken.
    - legt die Sreien Nr. in eine Datei auf die Platte. verschlüsselt natürlich.

    Ergebnis:
    Beim Start des Programms
    - ist die Serien Nr. in der vorahndenen Datei ?
    - ist die Art der Verschlüsseung, in der Datei, nach meinem vorgegebenene muster ?
    - und ist die SereienNr. des Biso die geleiche wie in der verschlüsselten Datei ?

    ja dann startet das Programm entlich.

    Vorteile:
    - Nur der User den ich mag, den schalte ich frei !
    - Bei bedarf kann ich Online steuern, ob der Use das Programm nutzen darf oder nicht !
    natürlich nur dann, wenn auch bei irgendeinem Start der Rechner eine Onlineverbindung hat!
    - Wenn nun das Programm an andere User weiter gegeben wird (sprich Raubkopie) kann der Empfänger das
    Programm garnicht nutzen, da seine Sereien Nr. (Prozessor, Bios oder beides) nicht übereinstimmt.

    Nachteiele:
    - es sollte hin und wieder mal eine Onlineverbindung bestehen.
    das ist dann wichtig, wenn es sich um Abbo Programme handelt.
    Also z.B Jährliche Zahlungweise des Kunden.
    - aufrüsten/umrüsten des Computer, nun muss der Kunde kurzzeitig warten bis die neuen Serien Nr. gepflegt sind.



    2. Möglichkeit

    das ganze prozedere ohne Online anbindung.
    also nach der eMail benachrichtigung des Kunden, sende ich Ihm die verschlüsselte Datei zu.
    Er kopiert sie nun in das geforderte Verzeichnis und ist fertg. Das Programm läuft.

    Nachteil:
    Bei Abbo Kunden ist das eine schlechte Idee. Zahlt er mal nicht, habe ich keine Möglichkeit Ihm die
    Software zu sperren.

    Für beide Versionen:

    Online oder nicht Online Version:
    Heutzutage ist es eigentlich unwarscheinlich das jemand nicht mehr Online ist.

    Entslüsseln:
    Natürlich könnte man mit Reflector o. änlichen Mitteln versuchen die Codierungsart und den Codierungsschlüssel
    auszulesen. Dann eine neue Datei mit neuem Schlüssel erstellen, dem User der die Raubkopie nutzt, mit in die
    Hand zu drücken und viel spass zu wüschen.

    Aber mal ehrlich,
    der Aufwand um einem guten Bekannten mal einen gefallen zu tun.
    Und der hat dann nur solange spass daran, bis er das erstemal Online ist. Nach jedem Online muss er seine
    geckrackte Verion wieder umkopieren ! puh, ob das aber spass macht zu arbeiten ?

    Fazit:
    für uns Hobbyprogrammierer sollte der Aufwand nun wirklich reichen.

    Bernd

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ChaosBernd“ ()

    aber alle methoden die nicht kompliziert sind ?
    sind doch bestimmt auch nicht kompliziert zu knacken !

    willst du deine programme schützen ? dann liegt noch ein wenig arbeit vor dir.
    ist die arbeit zu aufwendig ? dann kannst du es auch sein lassen ! die häcker wirds freuen, weil dan eigentlcih gar kein hacken nötig ist.


    sorry,
    abe es ist wirklich ein wenig arbeit.
    Naja...
    Man könnte z.B. bei der Installation einen Code anfordern und diesen Code abhängig machen von z.B. Bios-Key
    Der Code wird dann in der Registry als Hash gespeichert und ggf. verglichen.

    -Reflektieren ist auch hier eine Schwachstelle, da der Code zum Generieren auch im Programm sein muss (zum Überprüfen)

    Konkret:
    AES-128 Key: Bios-ID, Plain: Datum/Zeit auf h genau (falls die Inet Verbindung zu lahm ist, damit es trotzdem klappt) der Installation
    -> ####-####-#### etc.
    Eingeben, vergleichen, Hashen (MD5)
    -> ####### in die Registry und in einem anderen Key das Datum/Zeit mit Stunde
    --------------------------Installiert!
    Key generieren: ####-####-####, Hashen: ####### und vergleichen.
    Erstellungsdatum der exe mit Zeitstempel der Installation vergleichen
    .................................Starten!
    Da wären wir dann wieder beim "Aufrüsten", an sich kein Problem (Halt mal eben neu machen) aber da die Programme hier bei weitem nicht so gut sind, dass man sich den Aufwand macht, halte ich die Bios-ID für besser, denn wenn man das Mainboard austauscht, dann muss man zumindest mal alles andere Zerlegen.
    Naja meine idee war eigentich:

    auf Funpic ein FTP server wo ich eine "Datenbank" anlege, um genau zu sein ein Textdowkument mit Keys,
    die seite ist Paswort geschützt.
    Das Programm get ins internet um den eigegebenen Key zu vergleichen,
    Ist der Key richtig wird er aus dem Dokument gelöscht und in ein Anderes als Backup geseichert.
    Ist es falsch , Form1.close

    Wenn
    er kein internet hat, muss man den Key über eine SMS / E-mail Vormular
    übertragen und dan inerhalb von 48Stunden überprüft bzw bei einer
    E-mail , ein Programm was die E-mail ausliest.

    Geht das irgentwie?

    Wenn ja , will mir da jemand helfen?
    Klar geht das, aber das zu umgehen dauert < 10 Sekunden. Sniffer oder Decompiler. Sogar Auswahlmöglichkeit, echter Luxus! Wobei man bei ersterem zu allen Keys kommen kann. Und auch noch Kontrolle über den Server kriegt. Hardwarebasierter Schlüssel ist eigentlich noch das sicherste.
    Ist zwar ein bisschen alt aber ich mach es so:

    Ich habe einen Generator der generiert einen Produkt-Key der dann in eine Datenbank registriert wird. Im Programm selber gibt man dann denn Produkt-Key ein und wird in der Datenbank gesucht ob er überhaupt generiert wurde. Wenn Ja dann wird nochmal überprüft ob er schon verwendet wird. Wenn Nein dann sagt er "Key Ungültig." Sobald der Key nicht in verwendet wurde aber sich in der DB befindet wird er registriert so das man ihn nicht mehr verwenden kann. Und sobald man keine I-Net Verbindung hat hat man 60 Starts also dann darf man nur die Software 60 mal starten. Es seiden es wjurde früher schon mit einem Key aktiviert. Ich speichere den Key und den Key von Windows in eine Datei. Warum den Win-Key? Damit man die Datei nicht so einfach auf anderen PC's verwenden kann !