| 

.NET C# Java Javascript Exception

4
Hallo Leute,

gibt es eine Möglichkeit, das Einbinden einer selbstgeschriebenen C#-DLL in fremde Programm zu verhindern, oder aber wenigstens den Zugriff auf öffentliche Methoden/Eigenschaften innerhalb dieser DLL von fremden Programmen aus zu sperren?

Vielen Dank für Eure Hilfe.
Carsten
25.11.2011
Carsten Ilwig 337 1 1 6
5 Antworten
1
Du könntest es mit einer Lizensierung versuchen:

Lizenzieren von Komponenten und Steuerelementen
25.11.2011
Eiger 1,9k 2 9
Vielen Dank für die Antwort.
Aber wenn ich das richtig verstehe, geht es da hauptsächlich um den Verwendungsschutz während der Entwurfszeit.
Ich suche aber eine Möglichkeit einen Verwendungs- und/oder Zugriffsschutz zur Laufzeit einzubauen.
Carsten Ilwig 25.11.2011
0
Als schmutzigen Hack könntest du auch den Konstruktor aller deiner Klassen anpassen und dort einen Lizenzschlüssel übergeben lassen. Nur wenn der korrekte gesetzt ist, funktionieren deine Klassen.
25.11.2011
m.fuchs 1,8k 2 8
Die Idee ist schon mal ganz gut. Wenn ich nichts "eleganteres" finde, werde ich es wohl auch so machen. Allerdings dann nicht pro Methode, sondern über eine zentrale Eigenschaft, die vor der erstmaligen Verwendung der öffentlichen DLL-Werte gesetzt werden muss. Also so etwas wie eine Initialisierung am Anfang.
Carsten Ilwig 25.11.2011
0
Hallo Carsten,

es gibt mehrere kommerzielle Anbieter für Lizenzierung (bis hin zu Hardware-Dongles). Aladdin HASP, safenet sentinel, ... kostet halt Geld.

Ein Mitglied hier im Forum (gfoidl) hat an anderer Stelle vor einiger Zeit mal einen Weg vorgeschlagen. Vielleicht auch was für Dich.

Zum Thema "Lizenzschlüssel im Konstruktor übergeben": Irgendwo in Deiner Dll musst Du diesen Schlüssel auf Gültigkeit prüfen, und dieser Code sowie der Schlüssel lässt sich mit Reflector oder ildasm schnell ausfindig machen und aushebeln.

Viel Erfolg
Florian
25.11.2011
ffordermaier 8,4k 3 9
Vielen Dank für Deine Antwort.
Die Variante von gfoidl ziehlt ja eher auf eine Lizensierung eines Programms ab und weniger auf eine DLL, obwohl es sicherlich auch dafür nutzbar wäre.
Der Nachteil ist halt der, dass dafür immer ein Datenaustausch mit dem Anwender, der ein Programm, welches die zu schützende DLL verwenden darf, stattfinden muss. Was einen nicht unerhelblich Aufwand darstellt.
Die Risiken bei der Konstruktorvariante sind mir bekannt. Ich muss halt selbst abschätzen,
wie groß mein Sicherheitsbedürfnis ist und wieviel Aufwand ich dahinein stecken will/kann.
Carsten Ilwig 25.11.2011
Genauso können natürlich auch alle anderen Schutzmechanismen geknackt werden. 100% Schutz gegen Cracker gibt es nirgends.
m.fuchs 25.11.2011
Klar, 100% Schutz gibt es nicht. Aber ganz so einfach wirds nicht, wenn Du z.B. nen Hardware-Dongle verwendest. Die Frage ist auch immer, wie groß die kriminielle Energie bezogen auf die Komponente ist. PDF drucken weckt wahrscheinlich weniger kriminelle Energie als Kreditkartenabrechung.
ffordermaier 25.11.2011
0
Als AccessModifier Internal verwenden und dann mit InterVisibleTo deine Anwendung registrieren.
http://msdn.microsoft.com/de-de/library/bb385840(v=vs.90).aspx

Hilft aber leider nicht gegen Zugriff über Reflection.
25.11.2011
phipu 287 1 8
phipu 287 1 8
-1
Vielen Dank an alle Beteiligten für Ihre Hilfe,
ich habe mich jetzt in der ersten Variante für den Schutz durch einen als Parameter übergebenen Lizenzschlüssel entschieden.

Carsten
26.11.2011
Carsten Ilwig 337 1 1 6

Stelle deine Sicherheit-Frage jetzt!