Pregunta

Estamos pensando en desarrollar una aplicación cliente-servidor usando C # y MySQL. Tenemos la intención de vender el producto en el estante como cualquier otra utilidad de software. Estamos preocupados por la descompilación de nuestro producto que no tiene algún tipo de ventaja sobre nuestros competidores en términos de facilidad de uso y funcionalidad incluido.

¿Cómo podemos evitar que nuestro software desde la descompilación, por lo que la lógica de negocio del producto permanece intacta?

Hemos oído hablar de Reflector y otros descompiladores lo que hace que nuestro código muy vulnerable para la copia.

Nuestra base de clientes no es Corporates pero los médicos que ellos mismos no pueden hacerlo, pero nuestros competidores puede copiar licencias / desactivar o incluso replicar el código / funcionalidad por lo que el valor de nuestro producto se pone en el mercado.

Cualquier sugerencia para evitar que esto es muy bienvenida.

¿Fue útil?

Solución

Si implementa ensamblados .NET a los equipos cliente, algún tipo de descompilación siempre será posible el uso de herramientas de reflector y similares.

Sin embargo, esta situación no es materialmente diferente a lo que se encuentra si escribió la aplicación en C ++ nativo. Siempre es posible descomponer las cosas -. Si fuera imposible, el procesador no podía entender que cualquiera

Nunca vas a derrotar el cracker experto -. Van a tratar su seguridad como un rompecabezas intelectual que hay que resolver para el desafío solos

La cuestión gira en torno a lo difícil que es para derrotar a sus prácticas de concesión de licencias y la retorno de la inversión .

Siéntate con una hoja de cálculo y mirar a través de los escenarios posibles - el peligro es probablemente menos de lo que piensa.

Factores como la "facilidad de uso" son visibles en el software para cualquier usuario observe - por lo que se podría pensar que sea fácil de copiar. Sin embargo, una buena experiencia del usuario es rara (y rara vez copiado bien), porque la mayoría de los desarrolladores (yo incluido) no son nada como usuarios típicos.

Te sugiero que concentrarse en hacer el trabajo de una galleta más difícil, porque nunca se puede hacer que sea imposible, simplemente no rentable.

Una posibilidad para tratar: Es posible pre-ensamblados compilar en código nativo como parte del proceso de instalación. Paint.NET hace esto por razones de rendimiento. Creo que una vez que haya hecho esto, se puede descartar los montajes originales y utilizar las ediciones de código nativo, optimizados.

Otros consejos

Si se tratara de mí, yo no estaría intento de confundir; Yo:

  1. No se preocupe por eso y su objetivo es mejorar continuamente y seguir por delante

Pero en segundo lugar

  1. Considere prestación de los servicios secretos '' a través de Internet. Depende de usted decidir lo importante y esto es posible; pero sí "prevenir" descompilación, debido a que el usuario final no tiene ni siquiera el código.

Google para .NET Obfuscator. Usted encontrará una gran cantidad de productos que ayudarán en esto. También hay preguntas están relacionadas ya formuladas en desbordamiento de pila.

Aquí están algunos:

Editar : En la búsqueda de herramientas De-ofuscar, me encontré con una herramienta de código abierto De4Dot . Esta herramienta es compatible con archivos DLL descompilación obfucated creados por la mayoría de las herramientas comerciales y hace un muy buen trabajo también.

La última vez que miré en esto, Spices.Net Ofuscador parecía lo mejor en el mercado.

No, yo no trabajo para ellos. :)

Smartassembly . Es fácil de usar y también tiene la capacidad de enviar informes de fallos también se construyó en.

Los ofuscadores otros han mencionado son probablemente muy bueno.

Un enfoque alternativo es posible que no haya considerado consiste en codificar parte de la lógica de negocio núcleo usando un lenguaje que está totalmente compilado a código máquina, tal como C ++.

La ventaja de hacer esto es que hace que sea mucho más difícil que alguien descompilar el código. Un inconveniente de esto es que tiene código en dos idiomas de mantener. Esto podría no ser el mejor enfoque para su situación, pero es útil en los casos en que sólo una pequeña parte del código necesita ser ofuscado mientras que el resto del código es la pelusa de interfaz de usuario.

A modo de ejemplo, el paquete de software médico podría estar llevando a cabo la detección de bordes de, por ejemplo, ciertas glándulas con el fin de decirle a un médico el tamaño de dicha glándula. El algoritmo para el cálculo del tamaño de la glándula imagen de mapa de bits de estaría contenida en un archivo DLL escrito en C ++.

para responder a su pregunta sobre la envoltura C ++ alrededor del código .NET; No creo que funcionaría, ya que al desplegar la aplicación de la DLL última DLL de C ++ y .NET que contiene el código de lógica de negocio va a ser entidades separadas y los que quieren llegar a su lógica de negocio seguiría siendo capaz de simplemente elegir el DLL .NET y vistazo dentro.

es posible que desee considerar Remotesoft Salamandra protector esto es mucho mejor que cualquier otra cosa, ya que hace que sea imposible de descompilar el lenguaje de alto nivel.

Por supuesto, cualquier persona que es un experto puede pasar bastante tiempo con el software y la figura hacia fuera porque no descompilar algunos, pero disimular todo el conjunto y obtener métodos

Por lo tanto, se puede obtener un pico, pero eso es todo. que tienen que averiguar el resto lo que disminuye la probabilidad de que alguien acaba de descifrarlo.

esperanza esto ayuda

Escritura en este hilo después de un largo tiempo. Hemos comprado un software llamado IntelliLock lo cual es útil en la prevención de la descompilación, la ofuscación y también tiene una fuerte módulo de licencias.

No fuimos para .Net Reactor a pesar de que tiene más controles de prevención como IntelliLock estaba cumpliendo nuestro propósito bastante bien.

Ofuscador confunde el código, pero el protector protege. Puede utilizar protector de .Net: NetWinProtector

IntelliLock ha servido nuestro propósito bien en términos de la ofuscación, así como la concesión de licencias. Pero yo no recomendaría el producto como el soporte no es lo suficiente. Nunca tuvimos respuestas a tiempo para el problema que nos enfrentamos. Tuvimos que buscar e investigación por nuestra cuenta o incluso cambiar el requisito de negocio para lograr algunos de los objetivos.

A través de esta respuesta no estoy con la intención de promover o degradar cualquier software, pero sólo quiero hacer que la gente tome conciencia sobre el producto que estamos utilizando para que puedan tomar la decisión acertada.

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