Easy-License - Protect Your Programm

  • Easy-License - Protect Your Programm


    Hallo Community,
    Ich Möchte euch Heute mein Projekt Easy-License vorstellen.

    Zum Anfang mal ein paar Kleine Informationen.
    Easy-License wurde von Anfang an von mir alleine Aufgebaut.
    Natürlich, wenn ich Probleme hatte habe ich auch mal jemand Anderen gefragt,
    bei dem ich mich dafür auch Bedanke.
    (Ein Großes Dankeschön an Lawliet der mir bei der .dll geholfen hat, auch wenn manchmal garkein Fehler vorhanden war. Danke!)
    Natürlich werde ich gucken das ich auch für Andere Programmier Sprache die .dll Umsetze, vielleicht werde ich dabei
    auch andere Programmierer fragen ;).


    Doch was ist Easy-License eigentlich?

    Ganz einfach, Easy-License ist ein System womit ihr eure Visual Basic Programme mit einer Lizenz schützen könnt.
    Natürlich bekommt ihr hier auf der Website ein Anwendungs Beispiel wie ihr das System in euer Programm einbaut.
    Sie können hier als Registrierter User bis zu 5 Programme Speichern und insgesamt 100 Lizenzen erstellen (Wenn mans gerecht aufteilt also 20 Lizenz pro Programm).
    Ein User kann dann eine solche Lizenz bei einem Ihrer Programme einlösen und dann das Programm sorgenfrei Genießen. Außer natürlich,
    Sie sperren die Lizenz womit der User dann das Programm nicht mehr verwenden kann.


    Welche Features besitzt Easy-License?

    Easy-License besitzt Momentan nur die Funktion seine Programme zu verwalten und seine Lizenzn zu verwalten.
    Natürlich können diese schon über die .dll überprüft werden. Auch ein Anwendungs Beispiel findet man als eingeloggter User auf der Homepage.
    Im Laufe der Zeit kommen natürlich auch noch Weitere Features wie z.B. das Aktiveren/Deaktivieren einer Lizenz oder eines Programmes(Womit alle Lizenzen dafür Deaktiviert/Aktiviert werden).
    Auch kommt später das man seine Programme und Lizenzen bearbeiten kann.

    Wie wird die Lizenz abgefragt?

    Die Überprüfung findet durch einen HTTP Post Request statt. Daher wird alles einfach über den Webspace laufen.
    Es wird auch nicht nur die Lizenz überprüft, denn das macht es den Usern ja leicht die Lizenzen zu knacken.
    Es wird über die Lizenz, dem Programm Namen und einer HWID verschlüsselt.

    So das wars dann von meiner Vorstellung meines Projektes(Vielleicht bearbeite ich sie Nochmal)

    Mit Freundlichen Grüßen
    Mythen

    [webdisk]32[/webdisk][webdisk]35[/webdisk][webdisk]33[/webdisk][webdisk]34[/webdisk]

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Mythen ()

  • Hört sich ja nicht verkehrt an. Ich denke auch das den Service sicher einige nutzen werden.

    Nur ein paar Fragen hätte ich jetzt dazu die sicher auch andere angehen.

    1. Wie sieht die API aus? Also wie prüft man mittels der DLL die Lizenz ab?
    2. Wie findet die Übertragung der Daten statt? Per einfachem HTTP-Request?
    3. Wie sieht es mit der Datensicherheit aus? Ich denke da dan verschiedene Programme. Dort erstellt man für alle Aktivierungsserver der Software einen A-Record auf die lokale (oder nicht existente) IP-Adresse und gibt einen mehr oder weniger validen Produktkey ein.
    4. Wird der Key einmalig geprüft oder bei jedem Start des Programmes? Oder bleibt das dem Programmierer überlassen?
    5. Ist die ganze Bibliothek nur in VB zu benutzen oder auch in anderen .NET-Sprachen?


    Weiterhin wäre es schön wenn du die Prüfsumme veröffentlichst. So kann jeder Downloader nachprüfen ob die Datei sich im Originalzustand befindet und nicht anderweitig verändert worden ist.

    lg
    [tabmenu]
    [tab='Werbung in eigener Sache']
    Du suchst einen Instant Messenger dessen Verbindung voll verschlüsselt ist? Weiterhin soll er mit anderen Instant Massenging Protokollen verknüpfbar sein? Außerdem möchtest du weltweit erreichbar sein (ähnlich icq und msn)? - Dann schick mir Post und erhalte ein unverbindliches, auf alle Fälle kostenloses, Angebot:
    [Blockierte Grafik: http://easy-scripting.net/icon/vCollection/pmEmptyS.png]
    [tab='Vorstellung']
    NurPech
    [tab='meine Tutorials']
    [subtab='C#']

    [subtab='PHP']

    [/tabmenu]

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von [Blockierte Grafik: http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png] verwendet werden

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von NurPech ()

  • Hallo NurPech,

    Mal zu deinen Fragen.

    1. Wenn du meinst wie der Code aussieht den man im Programm selbst rein schreiben muss, das siehst du anhand des Screens hier:(Screen von der Anwendungs Beispiel Seite die man sieht wenn man eingeloggt ist!)
    [Blockierte Grafik: http://screeny.flash-projects.de/KONIkXQRpetHJ72Ny.png]

    2. Es ist ein HTTP-Post-Request. Das heißt es wird alles über POST und nicht über GET oder REQUEST gemacht.
    3. Ich Versteh den Sinn nicht ganz dieser Frage ?(
    4. Wie oben anhand des Screens zu erkennen ist, wird wenn der Programmierer dies einfügt(Ohne die funktion funktioniert eigentlich garnix) überprüft ob die license.dat vorhanden ist.
    Aus dieser wird dann die Lizenz ausgelesen falls die Datei vorhanden ist. Sollte die nicht vorhanden sein, wird dem Benutzer eine Lizenz Activate Form angezeigt. Daher, die Lizenz wird bei jedem Programm start abgefragt.
    5. Soweit ich weiß kann man die Dll auch in C# benutzen. In Anderen .NET-Sprachen bin ich mir nicht ganz Sicher da ich mich eigentlich nur mit Visual Basic beschäftige.

    Die HWID wird in SHA1 Verschlüsselt an die PHP File mit den restlichen angaben gesendet.
    Daher kann niemand die HWID unverschlüsselt ansehen.

    Der Source von der .dll wird nicht veröffentlicht. Denn was bringst denn? Dann haben alle die Kenntnisse wie die HWID zusammen gesetzt ist und können das Lizenz System ziemlich schnell knacken.
    Von Daher bleibt der Source bei mir u. bei Lawliet(Er hat den Source nur wegen Bug Behebung wo ich nicht Weißter wusste).
    Daher habe ich die .Dll auch Obfuscatet.
  • Wollte ich den Code haben?
    nein

    Wollte ich die Prüfsumme?
    ja

    Wo ist der Unterschied?
    Ein Sourcecode ist eben der Code. Die Prüfsumme ist ein errechneter Wert aus verschiedenen Informationen einer Datei. Üblicherweise mit md5 oder sha1 oder beiden Algorithmen errechnet. Google mal nach.

    Frage 3 ist größtenteils beantwortet aber ich stelle sie nochmals etwas detaillierter:
    Du schreibst es wird eine license.dat benötigt. Stehen da Daten drin die nur vom Server kommen oder wird die Datei "manuell" (vom Programm) mit Daten gefüllt? Weiterhin würde ich gerne wissen ob alle Daten die zum Server geschickt und von dort wieder empfangen werden im Klartext übermittelt werden (und so abgefangen/mitgeschnitten werden können) oder ob sie mit irgendeiner Art Algorithmus verschlüsselt werden. Außerdem: Werden die empfangenen Daten auf Echtheit geprüft? Oder könnte ich mir theoretisch einen eigenen "Server" programmieren der einfach nur die Daten zurückgibt die die DLL haben will?
    [tabmenu]
    [tab='Werbung in eigener Sache']
    Du suchst einen Instant Messenger dessen Verbindung voll verschlüsselt ist? Weiterhin soll er mit anderen Instant Massenging Protokollen verknüpfbar sein? Außerdem möchtest du weltweit erreichbar sein (ähnlich icq und msn)? - Dann schick mir Post und erhalte ein unverbindliches, auf alle Fälle kostenloses, Angebot:
    [Blockierte Grafik: http://easy-scripting.net/icon/vCollection/pmEmptyS.png]
    [tab='Vorstellung']
    NurPech
    [tab='meine Tutorials']
    [subtab='C#']

    [subtab='PHP']

    [/tabmenu]

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von [Blockierte Grafik: http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png] verwendet werden
  • Also wie gesagt wird die HWID die aus folgenden Componenten besteht: ProcessorID, ProcessorTyp, HDDSerial, MacAddress und der MotherBoardID, diese werden dann zusammengefasst in SHA1 gehasht.
    Die license.dat wird vom Programm beschrieben mit der Lizenz u. Dem Programm namen.
    Die Daten die an den Server geschickt werden bleiben so wie sie sind, sie werden nicht extra verschlüsselt. Nur die HWID ist in SHA1 verschlüsselt und wird nicht zurück gewandelt(Ist bei einem Hash ja auch normal).
    Am Server angekommen werden die Daten mit vorhanden Daten in der Datenbank überprüft, sollte irgend etwas nicht übereinstimmen mit den Daten in der Datenbank wird ein Error zurück gegeben und die DLL weiß das es keine Gültige Lizenz gibt und somit das Programm sich dann abschaltet.
  • Also wenn ich das jetzt richtig verstanden habe, wird im Falle eines Fehlschlages ein Error zurückgegeben und ansonsten nichts?

    Versteh mich bitte nicht falsch, ich will nur versuchen mögliche Schwachstellen aufzudecken damit du sie behebebn kannst. Und das ist bei Lizensen ja wohl mitunter das Wichtigste. Nicht umsonst geben Firmen tausende von [hier deine bevorzugte Währung einsetzen] aus nur damit sie ein funktionierendes Lizenzsystem haben.

    Aus Schutz vor Crackern habe ich auch die Cecksumme (=Prüfsumme) angefordert. Und hier bitte ich dich nocheinmal diese in den Eintrag in der Webdisk zuschreiben.
    [tabmenu]
    [tab='Werbung in eigener Sache']
    Du suchst einen Instant Messenger dessen Verbindung voll verschlüsselt ist? Weiterhin soll er mit anderen Instant Massenging Protokollen verknüpfbar sein? Außerdem möchtest du weltweit erreichbar sein (ähnlich icq und msn)? - Dann schick mir Post und erhalte ein unverbindliches, auf alle Fälle kostenloses, Angebot:
    [Blockierte Grafik: http://easy-scripting.net/icon/vCollection/pmEmptyS.png]
    [tab='Vorstellung']
    NurPech
    [tab='meine Tutorials']
    [subtab='C#']

    [subtab='PHP']

    [/tabmenu]

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von [Blockierte Grafik: http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png] verwendet werden
  • Bist du dir im Übrigen sicher das du das Attribut LizAktiv mit der richtigen Sichtbarkeit deklariert hast?

    Ich bekomme einen Fehler in der mir sagt ich darf nicht auf ein Attribut zugreifen was nicht als public deklariert wurde.


    Dein Screenshot ist nur falsch. Du hast keine lizAktiv ist keine Instanzvariable sondern eine Klassenvariable welche statisch aufgerufen werden muss. Daher ist EasyLicense.LizActiv richtig statt Lizenz.LizAktiv.

    Gestet unter Visual C++, Visual Basic und Visual C#

    für C# sieht der Code im Übrigen so aus:
    [cs]using Easy_License;[/cs]
    [cs]EasyLicense license = new EasyLicense("easyLicenseTest");
    license.CheckLicenseDat();
    if (!EasyLicense.LizActiv)
    {
    this.Close();
    }[/cs]

    Wie sieht es eig damit aus wenn du das Fenster für die Abfrage der Daten für die Lizenz als Dialog machst, so dass das Hauptfenster gesperrt wird?
    [tabmenu]
    [tab='Werbung in eigener Sache']
    Du suchst einen Instant Messenger dessen Verbindung voll verschlüsselt ist? Weiterhin soll er mit anderen Instant Massenging Protokollen verknüpfbar sein? Außerdem möchtest du weltweit erreichbar sein (ähnlich icq und msn)? - Dann schick mir Post und erhalte ein unverbindliches, auf alle Fälle kostenloses, Angebot:
    [Blockierte Grafik: http://easy-scripting.net/icon/vCollection/pmEmptyS.png]
    [tab='Vorstellung']
    NurPech
    [tab='meine Tutorials']
    [subtab='C#']

    [subtab='PHP']

    [/tabmenu]

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von [Blockierte Grafik: http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png] verwendet werden

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von NurPech ()

  • Das wollte ich andeuten ;)
    [tabmenu]
    [tab='Werbung in eigener Sache']
    Du suchst einen Instant Messenger dessen Verbindung voll verschlüsselt ist? Weiterhin soll er mit anderen Instant Massenging Protokollen verknüpfbar sein? Außerdem möchtest du weltweit erreichbar sein (ähnlich icq und msn)? - Dann schick mir Post und erhalte ein unverbindliches, auf alle Fälle kostenloses, Angebot:
    [Blockierte Grafik: http://easy-scripting.net/icon/vCollection/pmEmptyS.png]
    [tab='Vorstellung']
    NurPech
    [tab='meine Tutorials']
    [subtab='C#']

    [subtab='PHP']

    [/tabmenu]

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von [Blockierte Grafik: http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png] verwendet werden
  • So

    Mit der Neuen DLL die ihr ab Jetzt downloaden könnt Funktioniert alles wieder Einwandfrei ;)


    Changelog:
    - Variable der Post Übergabe etwas geändert.
    - Die Ausgabe werte geändert die das PHP Script ausgibt.
    - Alle Variablen werden vorher Encryptet und nur im PHP Script zum überprüfen Decryptet.
    - Die Lizenz u. der Programm Name wird in die License.dat auch nurnoch Encryptet rein geschrieben.

    Somit ist der Sicherheit noch ein Stückchen Mehr gegeben ;)

    Edit:

    Nun kann man auch seine PHP Scripts mit Easy-License Schützen ;)
    Die Ganze Funktion wird aber wahrscheinlich in den nächsten Tagen noch einmal überarbeitet.

    Zudem suche ich noch Leute die Lust & Zeit haben sowas auch für andere Programmier Sprachen bereit zu stellen.
    Wer Interesse hat soll mir bitte eine PN schicken. Er bekommt dann alle Weiteren Infos.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Mythen ()