Pregunta

Tengo una DLL .NET (C # / VB) con controles personalizados, extensión y otras cosas.

Quiero que debería estar disponible para mí solamente. ¿Hay alguna manera de restringir el acceso no autorizado a un archivo DLL?

¿Fue útil?

Solución

Su mejor opción es empacar / encriptar / ofuscar la DLL como Anton señaló. Y luego rezar para que nadie va a ir a través de toda la molestia de sacarlo.

El término usual para esto es simplemente "paquete".

Esto es lo que hacen los desarrolladores de juegos con f.ex de Sony SecuROM .

Sin embargo, todos los programas de embalaje tienen los mismos inconvenientes:

  1. Se pueden ingeniería inversa y la clave de cifrado deben estar incrustadas en el binario
  2. Por lo general cuestan dinero, y los que no ( UPX ) hacer son fácilmente sin embalaje .
  3. temas
  4. Plataforma incompatability pueden ser introducidos por el proceso de desembalaje.
  5. pic binarios tienden a asustar Anti-virus fuera.

Las empresas que utilizan los envasadores por lo general los buques binarios que deben ser capaces de funcionar en todos los equipos pensable. Si realmente se quiere decir que, supongo que se podría cifrar cada archivo DLL se envía con una clave única y luego requerir que se corrió con acceso a Internet para un poco de magia de desafío-respuesta durante la fase de descifrado. Exageración en todo caso.

También puede hacer su propio empaquetador, pero créanme cuando digo que: Usted no quiere ir allí;)

En resumen, lo que quiere no es fácil de lograr, incluso para los grandes jugadores. ¿Cuánto tiempo se necesita para que un juego de SecuROM se muestre en piratebay? Así que lo único que puede hacer es "elevar el listón" y la esperanza de pasar desapercibido por las buenas inversa-ingenieros.

Por último, saber lo que está recibiendo en sí mismo: ¿Va a valer la pena para usted? Digamos que usted envió la DLL desempaquetado - tal como es. La gente todavía tendrán que realizar ingeniería inversa para usarlo. ¿Quién utiliza las bibliotecas 3 ª parte sin papeles de todos modos? Sólo he hecho que una o dos veces en los momentos de locura.

Otros consejos

Bueno, no redistribuyen el conjunto en el primer lugar. Tan pronto como el montaje es en el medio silvestre, cualquiera puede utilizarlo. Usted puede hacer esto más difícil por ofuscación , pero "puntos de entrada" seguirán ahí y utilizable .

En teoría, se puede hacer algo con CAS , pero no estoy seguro de que este particular es del todo posible.

Tal vez se puede usar / herramientas de protección de copia de licencia para alterar su DLL. Y dentro de la persona que llama, usted indica el número de la licencia requerida.

Esto no es completamente posible. Si desea que su código se ejecute, que tiene que ser ejecutable. Usted puede poner en cheques, embalaje, claves de cifrado, organismos de control, monitores, guardas, y varios esquemas de licencia, pero al final del día si su código funciona tiene que ser desbloqueados de alguna manera para que pueda ser utilizado.

Esta es la razón por DRM no funciona. Que desea proteger X, pero desea que alguien más para verlo. El problema es que la persona no desea que la visualización / utilizando X y la persona a la que desee mediante X son, en algún nivel, la misma persona .

Me puse tan harto de tratar con código de licencia tercera parte (ruptura / anular el registro / pensando que no era un usuario legítimo cuando se suponía que debía ser) que se convirtió en un miembro de la FSF. No vale la pena mi tiempo para evitar las restricciones de otra persona, y no vale la pena mi tiempo para tratar con ellos. Su código no era tan especial.

Si eres fuerte nombrar sus asambleas, considere el uso de la PublisherIdentityPermissionAttribute . Puede agregar esto a su DLL y únicamente unidades firmados con la clave editor adecuado será capaz de llamar a ese método o clase.

Este es gratis y no integrado en la plataforma .NET. Si necesita funciones adicionales (como la capacidad de la licencia de la DLL para otros desarrolladores) considerar una herramienta profesional de protección contra copias nivel como nuestra herramienta DeployLX Licencias .

Hay que añadir controles en la DLL para verificar que la persona que llama es usted. Pero eso plantea otros desafíos:

¿Cómo probar que se encuentre de una DLL. (Se puede comprobar por algo más simple como el nombre de usuario actual, pero que no puede ser perfecto).

Se podría requerir que el archivo ejecutable está firmado por el certificado.

Usted debe revisar la infraestructura de la concesión de licencias. No tengo idea de cómo ponerlo en práctica, pero lo uso mediante la creación de un archivo .licx y luego, creo, el proceso de generación utiliza la herramienta lc.exe que hacer algo para incrustar la licencia.

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