Pregunta

¿Puede alguien decirme cuál es el mejor enfoque para proteger mis DLL de componentes en .Net?

He escrito algunos componentes DLL que estarán disponibles públicamente. Se les otorgará la licencia correspondiente, pero quiero asegurarme programáticamente de que nadie esté utilizando ilegalmente los componentes dentro de sus soluciones.

¿Alguna idea?

¿Fue útil?

Solución

Dado que su código ya está ofuscado, puede hacer que las clases incorporadas se instalen con una clave de licencia antes de llamar a cualquiera de los métodos. Si descubre que la clave no es válida / actual, puede mostrar un cuadro de mensaje o devolver un error / excepción.     Hay muchos ejemplos de dónde se hace esto (visite Xceed.com para uno) pero, como sugieren las publicaciones anteriores, es simplemente para desalentar a los usuarios finales de tratar de usar su ensamblaje ilegalmente. No lo impidió completamente. Con suficiente tiempo e incentivo, cualquier cosa puede romperse.

Otros consejos

Intentar evitar que las personas hagan cosas a un nivel tecnológico solo llevará a que trabajemos en torno a sus esfuerzos para detenerlos mediante ingeniería inversa (para lo cual el código confuso nunca los detendrá, solo los frenará), limpio diseño de la habitación y así sucesivamente. Su mejor apuesta es reforzar a aquellos que reciben una licencia para usar los términos de uso de sus bibliotecas y para defender sus derechos legales para hacer cumplir los términos de uso.

Lo mejor que puedes hacer es ofuscar tu código. Esto no será 100% seguro y se puede realizar ingeniería inversa.

dotfuscator

es una bonita.

Corto de " no distribuirlos " no hay una forma 100% segura de evitar el acceso no autorizado.

Puede buscar dispositivos de licencia de hardware o software. Espolvoree las comprobaciones de licencia en todo su código y, si el dispositivo no está presente, simplemente cancele todo.

Otra idea es declarar todos sus tipos en el ensamblaje como interno y luego configurar su aplicación principal EXE como un ensamblado amigo con el InternalsVisibleTo atributo de ensamblaje. Esto se usa normalmente para los miembros internos de prueba de unidad y no tengo idea de qué tan seguro sería en la práctica. Esto no evitaría que las personas desmonten su ensamblaje, por lo que es posible que aún desee confuscar y esto no funcione en absoluto si está vendiendo la biblioteca y tiene la intención de que los clientes las usen (porque tendría que proporcionar compilaciones personalizadas a cada cliente).

Como dijo Phoenix, realmente no hay manera de proteger completamente tu código, ya que aún se pueden descompilar a través de una herramienta como un reflector.

Una de estas herramientas sería utilizar Dotfuscator .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top