proteger ofuscar codigo cifrar .net asp.net dll copy-protection

ofuscar - ¿Cómo puedo proteger mi código fuente ASP.Net de mis desarrolladores?



proteger codigo javascript (8)

Esa es una posición extraña para estar en ... mis condolencias.

En el nivel .Net, lo mejor que puedes hacer es ofuscar tu código cuando lo construyes. Firmar firmemente su ensamblaje le permitirá saber si también está ocurriendo una manipulación.

Otro enfoque que algunas personas han tomado es escribir el código realmente sensible en C ++ y compilarlo en un .dll no administrado, y llamarlo desde .NET usando interoperabilidad. El bytecode de C ++ es mucho más difícil de leer que IL, y esto arroja muchas más barreras para la ingeniería inversa fácil.

Editar: en base a los comentarios del PO, aquí hay una respuesta actualizada.

Si simplemente te preocupa que robe el archivo DLL que colocas en la carpeta bin de tu servidor web, simplemente publícalo en una subcarpeta de / bin, cierra la carpeta con permisos de Windows, por lo que no hay forma de que puedan entrar y cambia tu web.config para sondearlo.

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="bin;bin/mysubfolder;" /> </assemblyBinding> </runtime>

Definitivamente asegúrese de nombrar con fuerza el .dll y mantener su archivo de clave privada en un lugar seguro. Eso hace que su .dll sea identificable de forma única y que se pueda detectar si lo logran.

Parece una posición extraña, pero déjame hacerte la pregunta de todos modos.

He creado algunos archivos DLL que hacen un poco de palabrería mágica que se necesita para mostrar el contenido del sitio web que estoy creando en este momento en ASP.Net. Tengo un pequeño equipo de desarrolladores que pueden ayudarme con esto, pero me temo que robarán mi código (el DLL) y lo usarán en proyectos cuando abandonen mi empresa. En un software, probablemente pueda probar que están usando mi DLL para generar el contenido, pero en un servidor donde las DLL no están disponibles para el público, no puedo.

Entonces, a pesar de tener un equipo, he estado trabajando en esto solo.

Mi pregunta es. ¿Hay alguna manera en que se te ocurra usar y proteger mi archivo DLL (que va a la carpeta bin) para que mis codificadores no puedan robarlo, o se vuelva inutilizable si se lo roban?

Solo quiero proteger lo que entra en la carpeta bin.


Esto puede no ser apropiado para su situación, pero podría proporcionarles una DLL proxy que no realiza los cálculos, sino que llama a su DLL.

A continuación, mantiene su archivo DLL en otro servidor al que solo tiene acceso y el DLL de proxy lo llama a través de algún tipo de protocolo de comunicación remota.


No sé mucho sobre el sistema legal en India, pero asegúrese de que firmen algún tipo de NDA, y acláreles que lo toman en serio y los demandarán si lo violan.

Y, si es posible, solo exponga su DLL a través de un servicio de Windows o un servidor COM fuera de proceso para que pueda aislar su DLL donde no puedan acceder directamente.

Si tienen acceso físico a su DLL, y son desarrolladores medianamente competentes, entonces probablemente no haya mucho que pueda hacer desde el punto de vista tecnológico para evitar que lo usen. Puedes ralentizarlos un poco, pero inevitablemente obtendrán lo que quieren si tienen acceso al binario. Negarles el acceso al binario es la única manera efectiva de prevenirlo.

Sin embargo, si la DLL procesa la entrada del usuario de cualquier manera y proporciona contenido para mostrar como resultado, entonces puede poner en algún tipo de "Huevo de Pascua" que dará como resultado una firma distintiva de algún tipo en función de una entrada oscura pero específica. Dependiendo del sistema legal que pueda ser lo suficientemente bueno para abrir una investigación y obligarlos a otorgar acceso a los investigadores para demostrar que no están robando su tecnología. A menos que sepan que está allí, probablemente no lo busquen y lo desactiven antes de que tenga la oportunidad de invocarlo.


Podría hacer que el dll verifique su entorno y no funcione (sugiero que lo haga dar resultados incorrectos en lugar de romper) si el entorno no se siente como en casa. También deberá ocultar el código para obstaculizar los esfuerzos para eliminar la protección.

Editar: puede usar una variable de entorno, clave de registro, existencia de un contador de rendimiento, una configuración poco clara en machine.config, etc., y hacer que se vea como una configuración genuina, luego ofuscar y firmar con un nombre seguro.


Podrías hacer que el dll hable con un tercero de confianza (que probablemente sería un servidor del que tendrías control) para hacer un poco de mano para asegurarse de que se supone que se ejecute.

Algo a lo largo de las líneas de

A. Hey, I''m sitting at [hostname->taken from env vars], can i do my job? B. (checks records of registered hosts) Yes you can. A. Thanks. (does what it does best)

editar: en general, si alguien más sabe que está haciendo esto, podrían vincular la dirección remota a la máquina que elijan ... en ese momento no ha solucionado realmente el problema original.


Crearía un servicio web en un servidor seguro que expondría las funciones de tu dll. Una vez hecho el desarrollo, puede cambiar las partes del código que llaman al servicio web para llamar al dll directamente.


Estoy de acuerdo con la estrategia de LachlanG de distribuir una DLL de proxy en lugar de darles a los desarrolladores acceso a la de producción que podría ser fácilmente descifrada e invertida.

Otra opción que puede explorar es proteger su DLL de "dongle". Me tropecé con tu pregunta mientras buscaba una solución a mi problema. Estoy explorando esta opción ya que estoy en el mismo lugar pero con una solución aún más vulnerable basada en PHP.

Descubrí que Keylok ofrece un producto competitivo a un precio asequible que estoy considerando. Aún no se ha visto cómo proteger las llamadas API en PHP, cuyo código no es binario ni ofuscado. No preveo ningún problema con una DLL.

Era un gerente de proyecto para una compañía que protegía su software de integración SAP con este tipo de llaves. El producto final fue un CD con el código, el manual de instalación, el dongle y una factura de licencia por $ 200k. Sweeet !!! ¡Fue hace 10 años, y aún no he oído de ninguna piratería o historias de infracción de derechos de autor de ellos!

Espero que esto ayude.