Programm mit HWID schützen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Programm mit HWID schützen

    Hallo zusammen :),

    ​ich habe vor ein Programm in vb.net zu schreiben, welches ich verkaufen möchte. (Ich weiß protection und so....hab ich schon tausendmal gehört)
    ​Nun ich habe eine Webseite auf der man das Programm später kaufen kann. Nach erfolgreichem Kauf bekommt man den Download. Logischer weise möchte ich
    ​verhindern das das Programm geshared wird. Dazu muss ich es mit der HWID des Käufers schützen. Nun ich kenne

    VB.NET-Quellcode

    1. My.Computer.Info.TotalVirtualMemory & My.Computer.Info.TotalPhysicalMemory = "die HWID"


    ​das Problem ist, das ich bei dieser Option immer wieder die HWID eingeben muss. Ich möchte allerdings, dass das alles automatisch läuft. Sprich -> wenn man das Programm zum
    ​ersten Mal startet, loggt es sich auf die HWID.

    ​P.S. nochmal wegen der protection. Ich habe im Source (bis auf die HWID) nichts wichtiges drin. Wenn also jemand das ganze cracken würde, würde ich es in der Datenbank sehen z.B. 3 leute haben gekauft aber 4 user greifen auf die Datenbank zu. Dann stell ich das Programm halt ab :)

    ​Ich hoffe man kann mir bei diesem Problem weiterhelfen

    ​MFG
    Sowas am RAM festzumachen finde ich etwas blöde. Hätte ich deine Software vor 3 Monaten gekauft könnte ich sie jetzt nicht mehr einsetzen (von 8GB auf 24GB aufgetockt).

    Wenn du sharing verhindern möchtest, dann benutze Lizenzschlüssel und sag dem Kunden, dass jeder mit seinem Schlüssel auch auf seine Daten zugreifen kann. Das hat sich dann ziemlich schnell mit dem sharen erledigt, und lässt sich automatisieren.
    das ist eine gute Idee...leider weiß ich überhaupt nicht wie ich sowas automatisiert einrichte. Man könnte in meinem Clienten auch einen HWID Change beantragen.
    ​Wenn du mir helfen würdest das ganze umzusetzen, wäre ich dir sehr dankbar

    LG

    DaWeed032 schrieb:

    Nach erfolgreichem Kauf bekommt man den Download
    Nach einem Erfolgreichem Kauf generierst du eben einen Lizenzschlüssel z.B. in der Form 123456-789ABC-DEF123-456789. Diesen hängst du mit an den Download ran, oder sendest ihn separat per E-Mail oder was auch immer, und speicherst ihn in deiner Datenbank als "berechtigter" Schlüssel. Bei den Anfragen muss nun als erstes dieser Schlüssel übergeben werden, sodass sich der User authentifiziert. Kommt nun ein User daher mit einem inkorrekten Schlüssel, kannste ihn aussperren.

    Dein Programm brauch halt eine Form in der dieser Schlüssel abgefragt wird. Sagt der Server, der Schlüssel ist Okay, kannste den getrost irgendwo auf dem Rechner ablegen und in Zukunft eben sofort in die Anwendung starten. Sagt der Server dass der Schlüssel nicht Okay ist, gibste dem User ne entsprechende Meldung aus, und beendest die Anwendung.
    Das Cracken deiner Anwendung bringt einem exakt null, da du ja (wenn ich es richtig gelesen habe) die Hoheit über die Datenbank hast, was bedeutet, dass du jeden ohne Lizenzschlüssel aussperren kannst.

    DaWeed032 schrieb:

    ​ich habe vor ein Programm in vb.net zu schreiben, welches ich verkaufen möchte.


    Was kann man später mit deinem Programm machen?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @hal2000 & @Gonger96
    Nun, ich habe @DaWeed032 so verstanden:
    Die Anwendung greift auf eine Datenbank zu, die sich auf einem Server von @DaWeed032 befindet. Ohne diese Datenbank kann die Anwendung nicht arbeiten.

    Mein Vorschlag:
    Damit die Anwendung Zugriff auf die Datenbank bekommt, muss sie der Schnittstelle (PHP, WCF, whatever) einen Lizenzschlüssel vorzeigen, der sich in der Liste der bestätigt gekauften Lizenzschlüssel befindet. Befindet sich der übergebene Lizenzschlüssel nicht in der Liste wird die Session beendet.

    Um nun die Anwendung zu "cracken" müssten die Cracker nicht nur die Lizensierung aushebeln sondern eine komplett neue "Data-Layer" ins Programm einbauen, die irgendwo eine Verbindung zu ner Lokalen oder konfigurierten DB aufbaut. Da wäre vermutlich selbst deobfuskieren von Quellcode sogar noch ein geringerer Aufwand. Dementsprechend unwirtschaftlich wäre das Cracken. Ebenso kann es dann @DaWeed032 überaus egal sein, da die gecrackten Versionen keinen Zugriff auf die zentrale DB haben, und so keinen Schabernack treiben können.

    Ansonsten gebe ich euch, @hal2000 & @Gonger96 natürlich recht.
    Das Problem ist, dass es nur sehr schwierig ist, die Funktionalität der Anwendung selbst zu schützen. Die Faustregel ist, dass jeder Code, der lokal mit Benutzerrechten ausführbar ist, quasi ungeschützt ist. Lizenz bei einer Datenbank vorzeigen? Gerne, aber der Knackpunkt ist die lokale Prüfung der Serverantwort.

    EaranMaleasi schrieb:

    Ohne diese Datenbank kann die Anwendung nicht arbeiten.

    Dieser Ansatz ist nur dann ausreichend sicher, wenn wirklich alle vom Programm benötigten Daten in der Datenbank liegen. Man nehme z.B. ein Bildbearbeitungsprogramm. Der Hersteller zwingt alle Benutzer dazu, ihre Daten (= Bilder) aus Lizenzgründen in seiner Datenbank / Cloud / Whatever zu speichern und bietet keine lokale Speichermöglichkeit an. Natürlich kann jemand die Anwendung reverse-engineeren und alle Anfragen auf eine lokale Datenbank umleiten. Viel eher tritt aber ein anderes Problem zu Tage: Niemand will ein derart eingeschränktes Programm benutzen.

    Spielt man das Spiel weiter, landet man bei einer Anwendung, deren Code auf einem Server liegt. Dann hat man einen kostenpflichtigen Cloud-Dienst und kann sich das Programmieren der lokalen Anwendung sparen. Nachteil: Nicht jeder Benutzer besitzt einen schnellen Internetanschluss - Photoshop als Cloudlösung für Gigapixel-Panoramen? Schlechte Idee.
    Gruß
    hal2000