So verhindern Sie, dass eine DLL in anderen Apps geladen wird

8

Derzeit entwickle ich eine C # .Net-Anwendung, in der ich ein benutzerdefiniertes Steuerelement verwende, das ich vor einiger Zeit entwickelt habe. Ich brauche die DLL innerhalb der neuen Anwendung ausgeliefert werden - aber verständlicherweise möchte ich nicht die DLL-Datei für fremde Anwendungen verwendet werden.

Aus diesem Grund muss die benutzerdefinierte DLL irgendwie in der neuen Anwendung kompiliert werden. Derzeit wird die DLL in das Anwendungsverzeichnis kopiert.

Irgendwelche Ideen? Sollte trivial imho sein.

Danke & amp; Grüße, Daniel

    
dhh 24.05.2010, 18:10
quelle

4 Antworten

5

Ich denke, Sie müssen Ihre Lizenz (en) lizenzieren: Ссылка

    
lesscode 24.05.2010, 18:13
quelle
3

Sehen Sie sich IL Merge an. Mit diesem Dienstprogramm können Sie mehrere .NET-Assemblies zu einer einzelnen Assembly kombinieren.

Ich zitiere:

  

ILMerge ist ein Dienstprogramm, mit dem mehrere .NET-Assemblies zu einer einzelnen Assembly zusammengeführt werden können. ILMerge verwendet eine Reihe von Eingabeassemblys und führt sie in einer Zielbaugruppe zusammen. Die erste Assembly in der Liste der Eingabeassemblys ist die primäre Assembly. Wenn die primäre Assembly eine ausführbare Datei ist, wird die Zielassembly als ausführbare Datei mit demselben Einstiegspunkt wie die primäre Assembly erstellt. Wenn die primäre Assembly einen starken Namen hat und eine .snk-Datei bereitgestellt wird, wird die Zielassembly erneut mit dem angegebenen Schlüssel signiert, sodass sie auch einen starken Namen hat.

Es ist jedoch zu berücksichtigen, dass die erstellte Assembly weiterhin verwendet werden kann. Sehen Sie sich die Verschleierung und Lizenzierung an, um die Lockerheit in Schach zu halten, aber denken Sie daran, dass jemand, der Ihren Code dringend benötigt, ihn auch bekommt.

Bestimmte Dinge machen es sehr viel schwieriger, wie einen Web-Service, aber selbst dann ist das kein vollständiger Beweis.

    
Kyle Rozendo 24.05.2010 18:20
quelle
1

Wenn Sie die DLL mit der proprietären Kontrolle ändern können, können Sie ...

  1. Markieren Sie alles in der Kontroll-DLL intern.
  2. Kompilieren Sie Ihre Assembly, sodass Ihre aufrufende DLL Zugriff auf die internen Mitglieder Ihrer Steuerelement-DLL hat.
  3. Unterschreiben Sie die aufrufende DLL.

Weitere Informationen hierzu finden Sie auf der MSDN-Seite das.

    
noctonura 24.05.2010 18:38
quelle
0

Es gibt eine Reihe von verschiedenen Hacks, die Sie tun können, um es für Leute schwieriger zu machen, sie zu benutzen. Sie alle können umgangen werden, aber so ist das Leben.

Sie können sich diese Antwort hier ansehen, um zu verhindern, dass eine unbekannte Baugruppe auf Ihre Baugruppe verweist: Secure C # Assemblies von nicht autorisierten Callern

Sie sollten Ihre Versammlung verschleiern, wenn Sie wirklich nervös sind. Dies macht es schwieriger zu dekompilieren. Etwas wie Babel funktioniert großartig: Ссылка

Sie können ILMerge auch verwenden, um die Baugruppe in einer anderen Baugruppe zu speichern. Diese Assembly wird jedoch zur Laufzeit extrahiert und exponiert. Sie können etwas in diese Richtung tun, um eine binäre Ressource aus einer Assembly zu extrahieren und eine temporäre Assembly zu erstellen, die zur Laufzeit verwendet wird. Wenn jemand wirklich motiviert ist, können sie auch die temporäre Versammlung finden ...

Die wirkliche Frage ist, wie weit willst du gehen? Irgendwann wird es sich nicht lohnen. Da hörst du auf.

    
Scott P 24.05.2010 18:42
quelle