Wie kriegt man in C einen guten Kopierschutz programmiert?



  • Hallo,

    ich hoffe in einigen Monaten hab ich ein kleines Programm anzubieten, was ich so im low-level Bereich versuchen werde zu verkaufen.

    Das Problem ist natürlich, so günstig kann gar nichts sein, daß die Leute das nicht als Kopie weiterreichen.

    Ein hardware-key scheidet im low level Bereich aus ist auch sonst zu umständlich.

    Ich knobele im Augenblick drüber, mit welchen programmiertechnischen Mitteln man sowas lösen könnte.

    Gruß Pascal



  • Am einfachsten würde ich da über eine Onlineaktivierung gehen. Also verkaust du für jedes Exemplar einen Key mit, welchen du natürlich vorher generiert hast und dann muss sich jeder User da irgendwie durch dein Programm anmelden, welches dann auf einem Server nachschaut, ob der Key schon in Benutztung ist und dann den Zugan verweigert, oder auch nicht.

    Da gibt es sicher noch ein paar Probleme zu lösen, wie z.B dass man das Programm deinstallieren und dann wo anders wieder installieren kann.



  • drakon schrieb:

    Am einfachsten würde ich da über eine Onlineaktivierung gehen. Also verkaust du für jedes Exemplar einen Key mit, welchen du natürlich vorher generiert hast und dann muss sich jeder User da irgendwie durch dein Programm anmelden, welches dann auf einem Server nachschaut, ob der Key schon in Benutztung ist und dann den Zugan verweigert, oder auch nicht.

    Da gibt es sicher noch ein paar Probleme zu lösen, wie z.B dass man das Programm deinstallieren und dann wo anders wieder installieren kann.

    Muß das Programm dafür funktionen haben, um online zu gehen? Damit kenn ich mich nicht aus.

    Ich fürchte, ich hab das nicht so ganz verstanden, was du meinst.

    Gruß Pascal2009



  • Ich versuch das jetzt mal zu verstehen:

    Ich lege in jedem .exe einen anderen key ab.

    Dann muß der Anwender online seine Lizenz abrufen.

    Das Programm bekommt den richtigen Key und läuft.

    Aber was hindert das Programm daran, DANACH auch auf einem anderen Rechner zu laufen?

    Ich fürchte, ich hab es wirklich nicht verstanden.



  • Falls es dein Ziel ist, effektiv ein lizensiertes Programm an einen Rechner zu binden, kommst du um einen Hardwareabgleich wohl nicht herum (CPU- oder HDD-ID, etc.)

    Bevor du da in Gefilde geraetst, die mit einigem Implementierungsaufwand verbunden sind, waere es sicher sinnvoll, dir mal genauer Gedanken darueber zu machen, was du eigentlich genau mit deinem Kopierschutz erreichen willst, bzw. was du meinst, wie viel Arbeit sich wohl jemand machen wird, dein "low level"-Programm illegal weiterzugeben. Es sei denn, du moechtest einen solchen Kopierschutz als Selbstzweck entwickeln...



  • Nobuo T schrieb:

    Falls es dein Ziel ist, effektiv ein lizensiertes Programm an einen Rechner zu binden, kommst du um einen Hardwareabgleich wohl nicht herum (CPU- oder HDD-ID, etc.)

    Bevor du da in Gefilde geraetst, die mit einigem Implementierungsaufwand verbunden sind, waere es sicher sinnvoll, dir mal genauer Gedanken darueber zu machen, was du eigentlich genau mit deinem Kopierschutz erreichen willst, bzw. was du meinst, wie viel Arbeit sich wohl jemand machen wird, dein "low level"-Programm illegal weiterzugeben. Es sei denn, du moechtest einen solchen Kopierschutz als Selbstzweck entwickeln...

    Ja die Hardware fiel mir auch gleich ein. Es geht nur mit einmal hin und zurück.

    Das .exe-File müßte bestimmte Parameter der Hardware auslesen, daraus eine Datei erzeugen, diese Datei müßte z. B. per email übergeben werden, und der Schlüssel, die datei lizenz.txt, die dann per email zurückkommt, würde die Hardware bereits berücksichtigen und wüßte, welcher Anwender damit schafft.

    Wieso meinst du, daß das so ein Aufwand wäre, einige Parameter der hardware in den Schlüssel einzubauen?

    Die programmiertechnische Frage wäre:

    Mit welchen Funktionen liest man ein System so aus, daß man es von einem anderen Rechner sicher unterscheiden kann?

    Ich glaube fast, das würde das PRoblem schon lösen.

    Apropos logisches Denken:

    100x100=10*1000

    1000*20= 20*1000

    Was wohl der Preis eines Programms damit zu tun hat, es nicht zu kopieren?

    1*20=0*1000.

    So einfach ist das doch, oder? 😉

    MfG Pascal2009



  • Für einfache Programme würde ich das Auslesen
    der MAC Adresse empfehlen.

    Gruß,

    Andreas



  • AndreasBo schrieb:

    Für einfache Programme würde ich das Auslesen
    der MAC Adresse empfehlen.

    Gruß,

    Andreas

    Hallo!

    Wenn ich mit

    system("ipconfig/all");

    aufrufe, habe ich einiges an daten auf dem Bildschirm.

    Aber wie bekommt man diese Ausgabe in eine Datei?

    Gruß Pascal2009



  • Hmm... du willst ein "kleines Programm" verkaufen. Du willst nicht, dass man es einfach kopiert. Du willst einen Kopierschutz um Vervielfältigung zu unterbinden. Der Kopierschutz wird wahrscheinlich stressen. Die Leute werden sich dann wohl ihr eigenes kleines Programm schreiben, besonders, wenn sie im "Lowlevel" Bereich tätig sind. Bzw. Ein Kopierschutz, der angemessen wäre ist auch von Leuten aus dem Lowlevel Bereich recht schnell auszuhebeln.

    Also verschwende lieber deine Zeit nicht mit der Implementation eines Kopierschutzes. Außer natürlich du willst dabei was lernen und dir neue Kentnisse aneignen.

    Aber als kleine Denkanregung: Dein Programm wird wohl dann mit Kopierschutz irgendwie so aussehen:
    - Frage ab ob mit dem Kopierschutz/Key/Hardware auf das Lizensiert wurde alles passt
    -> wenn ja dann läuft das Programm normal
    -> wenn nein, dann wird eine Meldung ausgegeben und das Programm terminiert.

    Wieso sollte nun jemand nicht einfach dein Programm, dass er von irgendwo bekommen hat ein bisschen reverse engineeren und dann einfach machen, dass das obige if immer true ist? Das ist nicht allzuschwer 🙂 - Ja natürlich kannst du da auch was dagegen machen ... aber dann kommst du nur vons hundertste ins tausendste und der Kopierschutz wird größer als dein eigentliches Programm...



  • Wenn Du im Ernst solche Fragen stellst wird's wohl noch dauern mit dem Geldverdienen.



  • Ich hab die Windows-IP-Konfiguration jetzt ausgelesen und in einer Text-Datei gespeichert.

    Da stehen alle Konfigurationseinweisungen.

    Windows-IP-Konfiguration
    Hostname
    ...
    Ethernetadapter
    Beschreibung des Ethernetadapters Realtek Ziffern
    NIC
    Physikalische Adresse
    Mehrere Tunneladapter

    usw.

    Welche von den Informationen wäre brauchbar, um den PC zu identifizieren?

    MfG Pascal2009



  • So jetzt habe ich mal einen zweiten Rechner in Betrieb genommen, offline.

    Der zeigt nur einen Bruchteil an wie von dem anderen Rechner.

    Unter Windiws-ip-Konfiguration ist nur Hostname aufgeführt, und dann kommt, weil offline, lediglich noch der Ethernet_Adapter -> Beschreibung + ->physikalische Adresse.

    Die Hostnames sind verschieden. Logisch. Daran kann man den einen PC schon mal vom anderen unterscheiden.

    Die Ethernet-Adapter auch.

    Die physikalische Adresse des Ethernet, wäre eine Möglichkeit.

    Was aber wäre, wenn der Anwender keinen Ethernetadapter eingebaut hätte?

    Und wo verbirgt sich da die MAC Adresse?

    An bestimmte Teilnehmer hier:

    Kommentare dieser Art, daß das, was ich möchte, sinnlos ist, oder Leute, die meinen, die wären sooooooooooooo viel schlauer, ohne was zur Sache beizutragen, solche Kommentare brauche ich nicht.

    Ich bin Konsolen-Programmierer, programmiere rein problembezogen, und mit dem ganzen Mist I/O und .Net und so weiter möchte ich auch weiter so wenig zu tun haben wie möglich.

    Da möchte ich höchstens einen fertigen Baustein einbinden und mich weiter um nichts kümmern.

    MfG Pascal2009



  • Da möchte ich höchstens einen fertigen Baustein einbinden und mich weiter um nichts kümmern.

    Das ist das Problem. Hilfe zur Selbsthilfe geht ok aber nicht sowas.

    Die physikalische Adresse des Ethernet, wäre eine Möglichkeit.
    Und wo verbirgt sich da die MAC Adresse?

    Ich befürchte, Du meinst diese Frage ernst.



  • Scheppertreiber schrieb:

    Ich befürchte, Du meinst diese Frage ernst.

    Er meint es so. Wobei mir der Sinn insgesamt nicht klar ist. Ich kaufe mir teure Software immer erst, wenn der Kopierschutz geknackt ist. Aus konkret schlechter Erfahrung heraus, weil mal ein HW- Dongle 17 Wochen unterwegs war und die Verdongelung mit der MAC nach dem Wegsterben zweier Mainboards und dann des Herstellers ähnliche Ausfallzeiten verursacht hat.

    Bei kleinen Tools bevorzuge ich einen Aktivierungscode, der an eine e-mail- Adresse gekoppelt ist, das ist probat, wenn man die VV z.B. für eine Testperiode hergeben mag. Irgendein key, der die email- Adresse mit freigeschalteter Programmversion verschlüsselt in die winreg schreibt, sollte reichen. Mehr macht eigentlich keinen Sinn.



  • Über Sinn und Unsinn von Dongles ist schon viel diskutiert worden. In Deinem
    Fall dürfte der Service der Firma bzw. deren Einstellung gegenüber den zahlenden
    Kunden nicht so ganz stimmen 😉

    Die nicht nur intern verwendete Software die ich Kunden gemacht habt, ist ohne
    Kopierschutz, der ist da auch nicht notwendig weil ich mit denen eh dauernd im
    Kontakt bin.

    Mir fallen da vor Allem Parallelen zu den kläglich danebengegangen Versuchen
    der Musikindustrie (s. DRM etc., Kriminalisierung der Kunden, Abmahnungen) ein.

    Bei Tools finde ich die Idee "Shareware" eigentlich ok.

    Wie Du auch schon ausdrücktest, geknackt wird alles. Vor Allem wenn es gut ist ...



  • pascal2009 schrieb:

    Was aber wäre, wenn der Anwender keinen Ethernetadapter eingebaut hätte?

    ja, in dem fall wäre dein kopierschutz für die katz. jedes windoofs berechnet sich übrigens bei der neuinstallation irgend so'nen fast-eindeutigen key aus einem mix aus hardware-informationen und 'ner zufallszahl. vielleicht kannste den ja nehmen. frag mal im winapi-forum, wie man da rankommt. anderer vorschlag: jeder user muss sich ein passwort ausdenken. das schickt er an dich und du machst mit einem geheimen algorithmus aus dem passwort und seinem namen (natürlich nur, wenn er die kohle überwiesen hat) ein zweites passwort daraus, mit dem er die software freischalten kann. vorteil: keine hardwareabhängigkeiten mehr. nachteil: wenn der algorithmus geknackt wird, musst du einen neuen entwickeln.
    🙂



  • ~fricky schrieb:

    mit einem geheimen algorithmus

    also jetzt bin ich etwas von dir enttäuscht 🙂



  • sothis_ schrieb:

    ~fricky schrieb:

    mit einem geheimen algorithmus

    also jetzt bin ich etwas von dir enttäuscht

    *schluck* du hast ja recht, geheimhaltung des algos ist ja gar nicht nötig. ich dummkopf.
    🙂



  • Die Beteiligung ist ja hier rege, finde ich gut.

    Einige Profis meinen: man kann alles knacken.

    Ja klar.

    Man kann jede Panzertür knacken.

    Wenn aber keine Panzertür da ist?

    Besser erstmal eine reinzusetzen, gelle?

    Die Profis marschieren dann da durch, die breite Masse nicht.

    Bislang hab ich nur einen wesentlichen parameter aus dem ip Befehl herausgezogen:

    Hostname.

    Wie wahrscheinlich ist es, daß zwei Pc´s denselben Hostname haben?

    Kann man den überhaupt nachträglich umstellen, ohne Neuinstallation?

    Für die Superschlauen hier:

    Ich bin ein altes Dos Relikt und kenne mich micht Windows nicht aus und will mich auch damit nicht auskennen. Als das Dos endete, bin ich aus der Programmierung raus, und jetzt aus aktuellem Anlaß wieder rein, aber nicht in Pascal, sondern in C.

    Daß es Leute gibt, die sich in vielen Dingen besser auskennen, ist klar. Die sollten hier aber nicht abrotzen und sich so schlechter darstellen als sie (möglicherweise) sind.

    MfG Pascal2009



  • pascal2009 schrieb:

    Kann man den überhaupt nachträglich umstellen, ohne Neuinstallation?

    klar, den kann man ganz einfach ändern.
    🙂


Anmelden zum Antworten