(Portabel) rechnereindeutige Hardwareinfos erhalten?
-
Eisflamme schrieb:
Was CPU ID anbetrifft, las ich, dass QT das wohl nicht kann und dass man das wohl mit ASM selbst auslesen muss. ASM wäre aber nicht für alle Prozessortypen eindeutig, also müsste ich unterschiedliche Codes nutzen.
Na ja, ich will mich da jetzt ehrlich gesagt nicht in Assembler-Details begeben, da würden mir auch einfach viel zu viele Fehler passieren, bis das Mal vernünftig funktionieren würde.
Wieso? Inline-Assembler geht ganz einfach, dazu ist der GAS Plattformunabhängig.
-
asc schrieb:
In der Regel verwendet man die MAC-Adresse und kombiniert diese noch mit ein paar anderen Merkmalen.
MAC-Adressen sind Treibersache, also Software. Ein Rechner kann viele oder auch keine MAC-Adresse haben.
Sofern ein Programm nicht im Kernelmodus läuft, sind auch alle anderen Nummern reine Software und können in der Regel (d.h unter Linux :p ) kinderleicht geändert werden. Und auch im Kernelmodus kann ein Programm ja immer noch in einer virtuellen Maschine laufen, in der die Hardwarenummern Einstellungssache der VM sind. Eine Hardwareverdongelung ist daher beim PC immer nur eine Hürde für Leute, die nicht mit ihrem Computer umgehen können. Du müsstest schon die Hardware selber stellen (a la PS3), aber auch da kann ein motivierter Hacker natürlich die Hardware auseinander nehmen (wie bei der PS3
).Suchst du vielleicht eine Internetaktivierung?
-
Dravere:
Genau das. Wobei man sagen muss, dass man mehrere Seriennummern bekommt. Wenn jemand in seinen Computer also nicht täglich eine neue CPU einbaut, wird das alles kein Problem sein. Wobei ich wie gesagt gar nicht weiß, wie diese Windowsfunktion arbeitet, vielleicht geht die nicht Mal über CPU, sondern über eine Windows-Lizenz-ID oder so.Klar, das ist nicht besonders toll, aber meine Zielgruppe wechselt nicht häufig die CPU oder den BIOS, sodass das nur eine kleine Gruppe von Nutzern hart treffen würde. Demgegenüber kann man aber die Seriennummer nicht einfach lustig weitergeben. Dieser Vorteil ist mir die Problematik für die Benutzer leider wert. Oder hast Du eine andere Idee, wie ich die Problematik lösen könnte? Internetzugriff hat die Software sowieso, ich kann also regelmäßige Online-Checks machen, falls notwendig.
Falls Du jedoch Deine Hardware häufig änderst, können wir gerne über eine erweiterte Lizenz sprechen, die für über 10 Maschinencodes funktioniert. Die kostet dann aber auch mehr.

SeppJ:
Ja, das liefe über Internetaktivierung. Hast Du da einen anderen Vorschlag? Mir ist bewusst, dass man irgendwelche CPU-IDs einfach ändern kann (allein wenn man eine VM hat). Das würde natürlich voraussetzen, dass der Käufer des Produkts seine Daten alle herausfindet und weitergibt. Der Nutzer der vom Käufer weitergegebenen Daten wiederum müsste dann eine VM nutzen oder anderweitig die Codes ändern. Das alles ist möglich, aber so wie bei allen Sicherheitsproblematiken geht es ja eigentlich sowieso nur darum, es möglichst "nervig" zu machen Raubkopien zu erstellen. Und das wäre mir nervig genug.
Edit:
Eine weitere Idee wäre natürlich die Seriennummer nach Aktivierung zu invalidieren. Wenn man sie also einmal in der Software eingespeichert hat, dann lässt sie sich auf anderen Rechnern nicht mehr einspeisen. Das ist aber auch so eine Sache, weil dann selbst bei Neuinstallation des Systems die Seriennummer nicht mehr funktioniert. Das empfinde ich deutlich schlimmer als ein Ändern der Hardware...Sone:
Also nach dem, was ich las, funktioniert das nicht für alle Prozessorfamilien gleich. Erstmal sind x86 und x64 anders und dann funktioniert ein Intel-Chip anders als einer von AMD. Und wer weiß, was da zukünftig alles kommt, da will ich ungern mit den Details kämpfen.
-
Eisflamme schrieb:
Also ich möchte eine Seriennummer generieren, die jeweils nur für eine Maschine funktioniert. D.h. wenn jemand anderes die Nummer an seinem PC eingibt, soll sie ungültig sein.
Was denn nun, Nummer pro Rechner oder pro Person?
Was willst du damit überhaupt erreichen? Ich meine jetzt einen realen Vorteil, nicht Linderung deiner Verlustparanoia.
Wieso sollte jemand eine Lizenz pro Rechner erwerben? Das ist doch total schwachsinnig, sich an den zu binden.
Warum mit abenteuerlichen Hacks Inkompatibilität mit zukünftiger Hardware oder Betriebssystemen riskieren? Wie sicherstellen, dass man die Software in 20 Jahren ohne Online-Aktivierung benutzen kann, wenn der Server längst weg ist?
Du kannst sowieso nicht verhindern, dass die Software illegal verwendet wird. Das geht prinzipiell nicht.
Es gibt viel einfachere und effektivere Möglichkeiten, wenn der Anwenderkreis überschaubar ist.
Verkaufe die DRM-Freiheit als Feature. Betone das Vertrauen dem Kunden gegenüber.
Um illegale Nutzung zurückverfolgen zu können, benutze irgendein personalisiertes Wasserzeichen.
Wenn diese Freiheit missbraucht wird, ist vielleicht der Verkaufspreis zu hoch.
Der Bezahlvorgang darf keine große Hürde darstellen. Paypal, Kreditkarte, Überweisung und ein Paypal-Klon sind das Minimum. Selbstverständlich muss der gesamte Erwerb ohne Zutun deinerseits ablaufen können.
Nerve die Leute nicht mit einer Registrierung. Kein Mensch will bei dir ein Konto und kein Mensch interessiert sich für deinen "Newsletter". Keiner. Kein einziger. Das schreckt nur ab und macht die illegale Version attraktiver.
Biete eine funktionell uneingeschränkte Demoversion an. So muss niemand die richtige Software cracken, um sie zu testen.
Setze auf Kundennähe, präsentiere dich als Mensch, nicht als irgendein austauschbarer Firmenname ohne Gesicht. Es ist viel leichter, jemanden zu bestehlen, den man nicht kennt.Das sind Gedanken von mir zu dem Thema. Keine Ahnung, ob das hier passt.
-
Eine Andere form von Bindung der Software an eine Lizenz ist über einen Hardware Dongle (z.b.als Usb-Stick) solche Dongles gibt es z.b. von Aladin oder Codemeter
-
Hi,
danke für die Antworten!
Also ich denke, ein Dongle ist das Umständlichste, was man einem Benutzer anbieten könnte. Für richtig teure Software macht das vermutlich Sinn, ich bin aber im <100 EUR-Segment.
TyRoXx:
Was willst du damit überhaupt erreichen?
Also konkret möchte ich folgende Dinge erreichen:
- Wenn die 30-Tage-Trial abgelaufen ist, soll man das nicht einfach über Datumsänderung, Registry-Änderung oder Zwischenschieben eines Proxys überlisten können
- Wenn Benutzer A irgendeinem Benutzer B seine Daten übergibt, soll Benutzer B die Software nicht einfach nutzen könnenDas einfachste Szenario ist, dass ein Benutzer seine Daten einfach irgendwem gibt, bei dem es dann automatisch funktioniert. Das passiert ständig, da an ein positives Menschenbild zu glauben ist in meinen Augen naiv. Natürlich gibt es nicht den perfekten Schutz, aber dieses Szenario zu verbieten hält schon 99% aller Kopiefälle ab. Wenn es darüber hinaus welche gibt, meinetwegen, kein Problem.
Viele Probleme, die Du sonst so siehst, sehe ich nicht. Server zukünftig weg? Alternativlösung über Update einspielen. Bindung an Hardware? Nicht toll, aber alle anderen Lizenzen erlauben eben obiges Szenario ohne jeden Umstand. Und ich könnte auch Lizenzen auf Zeit anbieten, die wären dann so ähnlich. Ich habe mir aber überlegt, dass ich Nutzern kostenlos anbiete eine weiteres System freizuschalten, wenn dafür eben ein altes System rausfliegt. Das ist dann bei Hardwareänderung ein Aufwand von einer Mail (aber den Service bieten andere ja nicht Mal an, die ebenso ein System nutzen), aber sonst kein Problem.
Ansonsten hast Du viele hilfreiche Tipps gegeben, Bezahlvorgang will ich so abwickeln wie Du sagst, Newsletter war nie geplant (Benutzer überweist Geld mit E-Mail im Bezahl-Betreff und erhält dann die Seriennummer per E-Mail; wird natürlich semi-automatisch gemacht, falls es Tippfehler gibt oder so; hier gerne auch Verbesserungstipps, wie ich es noch besser automatisieren kann oder so! Vielleicht kann das PayPal noch automatischer, so weit bin ich noch nicht).
Mich als Mensch verkaufen, wird auch gemacht, ist so geplant.
Dem Kunden vertrauen, ja gut... ich finde so eine kleine Sicherung nicht schlimm. Ich finde das als Benutzer jedenfalls selbstverständlich, wenn da so ein gewisser Schutz drin ist. Und wenn ich in zwei Jahren meine Hardware wechseln sollte und es die Software wert wäre, würde ich eben auch eine neue Lizenz kaufen (bei viel Software läuft die Lizenz über Zeit ab, das würde hier eben über die Zeit der Hardwareänderung geschehen, die ja eigentlich sogar widerspiegelt, wie viel Geld der Benutzer generell hat... aber das ist jetzt etwas weit gesponnen)Also bis auf das Szenario, dass jemand die Hardware wechselt, bekommt der Benutzer gar nicht mit, dass da irgendwelche Abfragen gemacht werden. Er erhält die Seriennummer, tippt sie ein -> fertig.
-
Eisflamme schrieb:
- Wenn die 30-Tage-Trial abgelaufen ist, soll man das nicht einfach über Datumsänderung, Registry-Änderung oder Zwischenschieben eines Proxys überlisten können
Wie soll das funktionieren? Woher bekommst du raus, ob die 30 Tage abgelaufen sind? Außerdem, kann der Benutzer die Trial nicht einfach erneut herunderladen und neu installieren?
-
Auch auf die Gefahr hin, dass ich jetzt gesteinigt wäre, der Plan war den Maschinencode (selbstgeneriert, nur in eine Richtung verschlüsselt, datenschutzrechtlich somit egal) online zu speichern und das Datum des Installierens auch. Somit wird bei Start eine kurze Abfrage an den Server gemacht, der hier einen Abgleich macht.
Gut, hier ginge auch noch ein abgestimmter Proxy. Man kann das aber noch mit ein paar Schlüsselverfahren (die der Benutzer natürlich auch nicht merkt) verfeinern, da habe ich schon ein paar Ahnungen, die in schlichten aber effektiven Ideen resultieren sollten.
-
Eisflamme schrieb:
Auch auf die Gefahr hin, dass ich jetzt gesteinigt wäre, der Plan war den Maschinencode (selbstgeneriert, nur in eine Richtung verschlüsselt, datenschutzrechtlich somit egal) online zu speichern und das Datum des Installierens auch. Somit wird bei Start eine kurze Abfrage an den Server gemacht, der hier einen Abgleich macht.
Gut, hier ginge auch noch ein abgestimmter Proxy. Man kann das aber noch mit ein paar Schlüsselverfahren (die der Benutzer natürlich auch nicht merkt) verfeinern, da habe ich schon ein paar Ahnungen, die in schlichten aber effektiven Ideen resultieren sollten.
Und wenn man eine Virtuelle Maschine verwendet?
-
Dann hat man gewonnen. Das tun aber die meisten Nutzer meiner Zielgruppe sicherlich nicht. Ich habe ja auch nie vom perfekten Schutz gesprochen, sondern nur davon, dass ich den Haupt-Anwendungsfall der Raubkopiererei verhindere (s.o.). Und den kriege ich hiermit gelöst und damit bin ich zufrieden. Wer so schlau ist eine VM zu nutzen und trotzdem kein Geld hat und auch keins zahlen will, der macht es eben über die VM und erträgt das WinRAR-artige Popup vor Öffnen der Software (oder wie auch immer das dann aussieht).

Was würdet ihr denn machen? Ich höre viel Kritik, aber wenig konkrete Vorschläge. Soll ich die Seriennummer für Online-Aktivierung nutzen und dann wie bei Office 3 Mal ausführbar machen? Findet ihr das besser? Aber wie gesagt: wenn dann einer zwei Mal in drei Monaten einen Virus hat und sein Windows neu installieren muss (ich denke, dieser Anwendungsfall ist wahrscheinlicher, als dass der Standardbenutzer ständig seine CPU wechselt), dann sind seine Seriennummern auch kaputt...
-
pyhax schrieb:
Woher bekommst du raus, ob die 30 Tage abgelaufen sind?
Authentifizierender ntp-Server.
pyhax schrieb:
Außerdem, kann der Benutzer die Trial nicht einfach erneut herunderladen und neu installieren?
Unter anderem dafür will Eisflamme seine unique id?
-
Es gibt schon viele Diskussionen über den Softwareschutz... Gut, dass du zumindest einsiehst, dass perfekter Schutz nicht möglich ist
Ich bin auch der Ansicht, dass eine halbwegs brauchbare Lösung völlig ausreichend ist. Ich nehme auch nicht an, dass deine Software auf Anhieb so bekannt wird, dass sich Profis damit beschäftigen werden, deinen Schutz zu knacken. Selbst wenn der Schutz nicht perfekt ist, muss man ihn doch erstmal knacken und dafür muss man sich so oder so sehr gut auskennen und viel Zeit investieren (außer, der Schutz ist trivial).
Schau dir aber mal an, wie andere das machen, es gibt schon paar Artikel über sowas. Gibt auch fertige Bibliotheken, die sowas anbieten, vielleicht findest auch eine brauchbare Open Source Bibliothek.
-
Hehe, ja, das Thema ist total strittig. Mir ist das bewusst, ich wollte hier auch keine große Diskussion lostreten. Ich habe mich schon etwas mit Raubkopien beschäftigt, die haben ja wegen Netzwerkeffekten teilweise sogar große Vorteile. Aber in meinem Bereich halt nicht.
Ich hab mich halt an der gleichen Branche orientiert, da ist mein Ansatz viel genutzt, somit sind die Benutzer eigentlich auch dran gewöhnt, wie ich denke. Trotzdem kann es ja immer sein, dass es noch besser geht, doch eine "Basisschutz" möchte ich eben haben, genau.
Nach solchen Bibliotheken habe ich schon geschaut, aber irgendwie nichts Richtiges gefunden, hast Du einen Tipp? Wobei ich sagen muss, dass ich mit Librarys für Schlüsselverfahren und ein paar Skripten auf meinem Server meiner Ansicht nach recht schnell fertig sein und auch gut mit auskommen sollte.

-
Ganz was anderes: Was, wenn ich als pöser Hacker einfach in deiner Exe einen kleinen Sprungbefehl an der Stelle einsetze, wo der Code für die Prüfung losgeht?
-
Dann bist Du sehr kluk und hast auch gewonnen.
Edit: Irgendwie habe ich den Eindruck, dass immer noch nicht ganz verstanden wird, welches Szenario ich verhindern möchte.

Also back to topic, ich nutze für Windows jetzt diese Crypt-Funktion, die funktioniert anscheinend ganz gut! Falls jemand weitere Vorschläge hat, freue ich mich! Falls jemand weitere Ideen hat meine Software zu hacken, kann er die gerne posten, wenn er sich dann besser fühlt.

-
SeppJ schrieb:
Ganz was anderes: Was, wenn ich als pöser Hacker einfach in deiner Exe einen kleinen Sprungbefehl an der Stelle einsetze, wo der Code für die Prüfung losgeht?
Ich halte das eben für wenig realistisch. Es gibt wenige Leute, die sowas machen können und wollen. Ich kann z.B. einigermaßen x86 Assembler und hab einige Projekte damit gemacht, trotzdem wärs mir viel zu umständlich und ich hätte überhaupt keine Lust, meine Zeit dafür zu verschwenden. Und damit sich jemand findet, der sich damit befasst und einen Crack schreibt, muss die Software eben bekannt genug sein. Aber dann kann man eh nichts dagegen machen, weil jede Software wird gecracked, trotzdem macht es keinen Sinn, gar keinen Schutz einzubauen.
Ich kenne keine entsprechenden Bibliotheken, habe mich nicht so intensiv mit dem Thema befasst. Ich weiß aber, dass sowas schnell ausarten kann, weil zwei Firmen, in denen ich bisher gearbeitet habe, eigene Lizenzlösungen gebaselt haben. Das war sehr fehleranfällig und wartungsintensiv und dann sind immer mehr Wünsche und Anforderungen hinzugekommen und dann wird die Lizenzierung schnell zu einem viel zu umfangreichen Teil des Projekts.
-
Hm, klingt gefährlich. Ging es bei den Lizenzen um verschiedene Versionen oder weil die auch für viele Produkte herhalten sollten? Ich bin halt immer gerne jemand, der die Grundversion selbst kurz baut und wenn es umfangreicher wird, dann auf eine entsprechend komplexere Software umrüstet, v.a. wenn ich etwas noch nicht gemacht habe. Jetzt ist dieses Lizenzierungszeug technisch zwar nicht schwierig zu machen, aber trotzdem will ich das Mal selbst gemacht haben.
Sollte das Geschäfts tatsächlich anlaufen, kann ich ja immernoch umsteigen (ja, könnte naiv sein...). Und irgendwie glaube ich, dass meine Maschinencode-Idee zwar nicht neu ist, aber dennoch nicht einfach Mal so in jeder zweiten Bibliothek zu finden ist. Zumindest hätte ich in der Suchzeit vermutlich schon selbst etwas halbwegs Brauchbares gebastelt.
-
Eisflamme schrieb:
Edit: Irgendwie habe ich den Eindruck, dass immer noch nicht ganz verstanden wird, welches Szenario ich verhindern möchte.

Doch. Du möchtest verhindern, dass ein Normalbenutzer Spaß an deiner Software hat, ohne jemanden der selbstständig die Uhr oder MAC-Adresse seines Rechners ändern kann davon abzuhalten, die Software zu kopieren.

Mechanics schrieb:
SeppJ schrieb:
Ganz was anderes: Was, wenn ich als pöser Hacker einfach in deiner Exe einen kleinen Sprungbefehl an der Stelle einsetze, wo der Code für die Prüfung losgeht?
Ich halte das eben für wenig realistisch. Es gibt wenige Leute, die sowas machen können und wollen.
Woot? Das ist das kleine 1x1 jedes Crackers, das allererste was man lernt. Das haben sich die Kiddies früher selber in ein paar Tagen/Wochen beigebracht. Heutzutage gibt es natürlich das Internet mit Anleitungen, da geht das auch in ein paar Stunden, wenn man vorher schon programmieren kann. Das kannst du auch lernen, wenn du dir dieses Wochenende Zeit nimmst. Die naive Technik wirkt heutzutage natürlich nur noch bei alten DOS-Spielen oder Software von Leuten die in Foren nach rechnereindeutigen Hardwareinfos fragen, aber es ist Grundlage fast jeder höheren Cracktechnik.
-
SeppJ:
Doch. Du möchtest verhindern, dass ein Normalbenutzer Spaß an deiner Software hat, ohne jemanden der selbstständig die Uhr oder MAC-Adresse seines Rechners ändern kann davon abzuhalten, die Software zu kopieren.
Die Spaß der Software hängt also für Dich... wovon ab? Mit der normalen Benutzung davon hat das jedenfalls nichts zu tun. Und ich für meinen Teil könnte meine Software nicht so ohne Weiteres cracken. Aber wenn die Skriptkiddies von heute da mehr draufhaben, gehöre ich anscheinend ja zur Schlussgruppe der IT-affinen Benutzer.

Zum Cracken:
Ja, klar, aber das ist halt der Punkt. Wenn sich jemand reinkniet, kriegt er alles hin. Das tun trotzdem 99% der Leute nicht.
-
und 1% der Leute stellt es online für 99% der Leute kostenlos zu verfügung...