Schutz einer Lib vor Manipulation
-
Sind in deiner Bibliothek viele statische Daten? (z.B.: sinus Cosinus Tabellen? / Lexer-Tabellen) Sonst kannst du diese Verschlüsseln mit einem geseedetem Hash deines Programmes / einiger schützenswerter Funktionen.
-
Rhombicosidodecahedron schrieb:
Sind in deiner Bibliothek viele statische Daten? (z.B.: sinus Cosinus Tabellen? / Lexer-Tabellen) Sonst kannst du diese Verschlüsseln mit einem geseedetem Hash deines Programmes / einiger schützenswerter Funktionen.
Gute Idee, und bei einem Programm könnte ich das so machen. Aber es geht um
eine shared Library, die von einem User-Programm verwendet wird. Über die
kann ich nur dann einen Hash berechnen, wenn ich zur Laufzeit weiß, wo der
User sie installiert hat. Ich glaube zumindest nicht, daß es eine Möglichkeit
gibt, den Pfad zu ermitteln?
-
Geht es hier um eine DLL? Wenn ja, gibt es auch Möglichkeiten, den Pfad der Datei herauszufinden (Stichwort: GetModuleFilename()).
-
CStoll schrieb:
Geht es hier um eine DLL? Wenn ja, gibt es auch Möglichkeiten, den Pfad der Datei herauszufinden (Stichwort: GetModuleFilename()).
Es ist eine Shared Lib unter Linux. Windows könnte später ein Thema werden.
Aber danke für den Hinweis.
-
sec schrieb:
Wir wollen bloß die Manipulation erschweren. Mir fällt dazu nur eine Prüfsumme über den String ein.
Dann benutze ich halt den Hexeditor um die Prüfsumme zu verändern.
Bessere Ideen?
Lizenz dazulegen und eventuell die lib ansich markieren? Dieses "wir müssen die Lib vor Veränderungen schützen" ist Kinderkacke. Wer will, wirds eh schaffen. Und es wird garantiert niemand bei euch anrufen und sagen: "hey ich hab hier ein kommerzielles Progrmam mit der Gratis Version eurer Lib, verklagt die mal". Also müsstet ihr eh kontrollieren. darum eventuell eine Markierung.
-
sec schrieb:
CStoll schrieb:
Geht es hier um eine DLL? Wenn ja, gibt es auch Möglichkeiten, den Pfad der Datei herauszufinden (Stichwort: GetModuleFilename()).
Es ist eine Shared Lib unter Linux. Windows könnte später ein Thema werden.
Da bist du eventuell im Linux-Board besser aufgehoben.
PS: Das Thema mit dem Schutz kam vor kurzem schon mal - und da bin ich der selben Meinung wie otze: Wer es wirklich will, kann deine Lib mit Hex-Editor und Disassambler auseinandernehmen und deine Sicherungen problemlos ausschalten (im einfachsten Fall wird der "gib den Lizenzhinweis aus"-Aufruf durch nop ersetzt).
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ (auch C++0x) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
otze schrieb:
sec schrieb:
Wir wollen bloß die Manipulation erschweren. Mir fällt dazu nur eine Prüfsumme über den String ein.
Dann benutze ich halt den Hexeditor um die Prüfsumme zu verändern.
Bessere Ideen?
Lizenz dazulegen und eventuell die lib ansich markieren? Dieses "wir müssen die Lib vor Veränderungen schützen" ist Kinderkacke. Wer will, wirds eh schaffen. Und es wird garantiert niemand bei euch anrufen und sagen: "hey ich hab hier ein kommerzielles Progrmam mit der Gratis Version eurer Lib, verklagt die mal". Also müsstet ihr eh kontrollieren. darum eventuell eine Markierung.
Klar geht das mit dem Hexeditor. Aber eine Prüfsumme zu finden und anzupassen
bzw. den Prüfcode zu finden, damit mit ihn ausnoppen kann, braucht schon wieder
mehr Grips und Zeit als bloß einen String auszunullen. Ein moderater Schutz
gegen Kleingauner reicht schon.Mit 'Marikieren' meinst Du, daß eine bestimmte Zeichenfolge im Executable ist,
anhand der man die Lib erkennen kann, richtig? Gute Sache, das ließe sich mit
einem char[], in dem ein verschlüsselter Text steht, erzielen. Oder gibt es
Tools, mit denen sich ein fertiges Executable markieren läßt?
-
Stimme für otze: Einfach verbieten. Anders geht es nicht.
Du kannst noch nicht mal sicher stellen, dass Ausgaben auf stdout irgendwo sichtbar ist. Ausserdem willst Du diese Ausgabe oder Prüfung in jeder einzelnen Funktion Deiner Bibliothek machen? Eine Bibliothek wird ja nicht "gestartet". Und gerade bei Linux wäre es zu bevorzugen, den Sourcecode zu bekommen, damit jeder es auf jeder Linux-Variante übersetzen kann.
-
Wenn du GPL als Lizenz nimmst schreckst du eh alle kommerziellen Kunden ab und kannst du jemanden relativ gut anzeigen, falls jemand den Sourcecode trotzdem Kopiert. http://de.wikipedia.org/wiki/Gpl-violations.org
Das wäre eine Möglichkeit, falls es dir nur/hauptsächlich darum ginge die Kommerzielle Nutzung zu verhindern.Alle Angaben ohne wie immer ohne Gewehr und Munition.