Pregunta

Estaba pensando en ofuscar una aplicación .Net comercial.Pero, ¿realmente vale la pena el esfuerzo de seleccionar, comprar y utilizar una herramienta de este tipo?¿Están los binarios ofuscados realmente a salvo de la ingeniería inversa?

¿Fue útil?

Solución

Quizás no tenga que comprar ninguna herramienta: Visual Studio.NET viene con una versión comunitaria de Dotfuscator.Otras herramientas de ofuscación gratuitas se enumeran aquí, y pueden satisfacer sus necesidades.

Es posible que los binarios ofuscados no estén a salvo de la ingeniería inversa, al igual que es posible que el candado de su bicicleta se pueda romper o abrir.Sin embargo, a menudo ocurre que un pequeño inconveniente es suficiente para disuadir a los ladrones de códigos/bicicletas.

Además, si alguna vez llega el momento de hacer valer sus derechos sobre un fragmento de código en un tribunal, haber sido visto haciendo un esfuerzo por protegerlo (ofuscándolo) puede darle puntos extra.:-)

Sin embargo, debes considerar las desventajas: puede ser más difícil usar la reflexión con código ofuscado, y si estás usando algo como log4net para generar partes de líneas de registro basadas en el nombre de la clase involucrada, estos mensajes pueden volverse mucho más difícil de interpretar.

Otros consejos

Recuerde que la ofuscación es sólo una barrera para el examinador casual de su código.Si alguien realmente quiere descubrir lo que escribiste, te resultará muy difícil detenerlo.

Si tienes secretos en tu código (como contraseñas), lo estás haciendo mal.

Si le preocupa que alguien pueda producir su propio software con sus ideas, tendrá más suerte en el mercado al proporcionar las nuevas versiones que sus clientes desean, con soporte técnico y siendo su socio.Los buenos negocios ganan.

En nuestra empresa evaluamos varias tecnologías de ofuscación diferentes, pero todas tenían problemas.El mayor problema fue que confiamos mucho en la reflexión, p.para crear dinámicamente cuadrículas basadas en nombres de propiedades.

Entonces todos los ofuscadores cambian el nombre de las cosas, puedes desactivarlo, por supuesto, pero luego pierdes gran parte del beneficio de la ofuscación.

Además, en nuestro código tenemos muchas pruebas de NUnit que dependen de que muchos más métodos y propiedades sean públicos, lo que impidió que algunos de los ofuscadores pudieran ofuscar esas clases.

Al final nos decidimos por un producto llamado Reactor .NET

Funciona muy bien y no tenemos ninguno de los problemas asociados con los otros productos.

"A diferencia de los ofuscadores, .NET Reactor detiene completamente cualquier descompilación mezclando cualquier ensamblado .NET puro (escrito en C#, VB.NET, Delphi.NET, J#, MSIL...) con código de máquina nativo.En detalle, .NET Reactor construye un muro nativo entre posibles piratas informáticos y su código .NET.El resultado es un archivo estándar basado en Windows, no compatible con MSIL.El código .NET original permanece intacto, bien protegido por código nativo e invisible a miradas indiscretas.El código .NET original no se copia al disco duro en ningún momento.No existe ninguna herramienta que pueda descompilar ensamblajes protegidos por .NET Reactor".

El hecho de que realmente se pueda realizar ingeniería inversa no hace que la ofuscación sea inútil.Sube el listón significativamente.

Un ensamblado .NET sin ofuscar le mostrará toda la fuente, resaltada y todo con solo descargar el Reflector .NET.Agregue ofuscación a eso y reducirá de manera muy significativa la cantidad de personas que podrán modificar el código.

Depende de quién te estás protegiendo.Si lo envía sin obstrucciones, también puede abrir la aplicación y beneficiarse del marketing.Enviarlo ofuscado solo permitirá a las personas generar binarios modificados con relativa facilidad a través de parches en lugar de poder robar su código y crear un competidor directo.Obtener la fuente real a partir de un código ofuscado es muy difícil, dependiendo del ofuscador, por supuesto.

Creo que depende del tipo de producto.Si está dirigido a desarrolladores, la ofuscación perjudicará a sus clientes.Hemos estado utilizando los productos ArcGIS en el trabajo y todas las DLL están ofuscadas.Esto hace que nuestro trabajo sea mucho más difícil, ya que no podemos usar Reflector para descifrar comportamientos extraños.Y estamos comprando clientes que pagaron miles de dólares por el producto.

Así que, por favor, no ofuscéis a menos que sea realmente necesario.

Cosas que debes tener en cuenta:

  • La ofuscación no protege su código ni su lógica. Simplemente hace que sea más difícil de leer y comprender.
  • La ofuscación no impide que nadie se detenga ante la ingeniería inversa. Simplemente ralentiza el proceso.
  • Su propiedad intelectual está protegida por la ley en la mayoría de los países. Entonces, si un competidor usa su código o implementación específica, puede demandarlo.

El único problema que la ofuscación puede resolver es que alguien cree una copia 1:1 (o cerca de 1:1) de su implementación específica.

Además, en un mundo ideal, la ingeniería inversa de una aplicación ofuscada no es económicamente atractiva.

Pero volvamos a la realidad:

  • No existe ninguna herramienta en este planeta que impida que alguien copie las interfaces de usuario, los comportamientos o los resultados que proporciona o produce cualquier aplicación. La ofuscación es en estas situaciones 100% inútil.
  • El mejor ofuscador del mercado no puede impedir que uno utilice algún tipo de desensamblador o editor hexadecimal. y para algunos geeks esto es bastante bueno para mirar el corazón de una aplicación.Es simplemente más difícil que con un código no ofuscado.

Entonces, la realidad es que puede hacer que sea más difícil y más lento examinar su aplicación, pero en realidad no obtendrá ninguna protección confiable.Independientemente de si utiliza un producto gratuito o comercial.

Las tecnologías avanzadas como la ofuscación del flujo de control o la virtualización de código pueden ayudar a que la comprensión de la lógica a veces sea realmente difícil, pero también pueden causar muchos problemas divertidos y difíciles de depurar o resolver.Por eso, a veces son más un problema adicional que una solución.

Desde mi punto de vista, la ofuscación no vale el dinero que algunas empresas cobran por sus productos. Si quiere molestar a los desarrolladores ocasionales, los ofuscadores de código abierto son lo suficientemente buenos.Si desea que sea lo más difícil posible examinar el corazón de sus aplicaciones, necesita utilizar contenedores criptográficos con entornos de ejecución virtuales y sistemas de archivos virtuales, pero también proporcionan vectores de ataque y también pueden ser una fuente de una bolsa llena de problemas. .

Su propiedad intelectual y sus productos están protegidos por ley en la mayoría de los países. Entonces, si hay un competidor analizando y copiando tu código, puedes demandarlo.Si un tipo malo, un hacker o un cracker toma su aplicación, le harán una broma, pero un ofuscador no hace la diferencia.

Por lo tanto, primero debes pensar en tus objetivos, tu mercado y lo que quieres lograr con un ofuscador. Como puede leer aquí (y en otros lugares), la ofuscación realmente no resuelve el problema de la ingeniería inversa.Sólo lo hace más difícil y lleva más tiempo. Pero si esto es lo que desea, puede echar un vistazo a ofuscadores de código abierto como, por ejemplo.SharpObfuscator u ofuscar que pueden ser lo suficientemente buenos para molestar a los programadores ocasionales (puede encontrar una lista aquí: Lista de ofuscadores .NET en Wikipedia).

Si es posible en su situación, es posible que también le interesen los conceptos de SaaS. Esto significa que usted proporciona acceso a su software pero no al software en sí.Por lo tanto, el cliente normalmente no tiene acceso a sus ensamblajes. Pero dependiendo del nivel de servicio, la seguridad y la base de usuarios, puede resultar caro, complejo y difícil realizar un servicio SaaS fiable, seguro y eficaz.

No, se ha demostrado que la ofuscación no impide que alguien pueda descifrar el código compilado.Esto hace que sea más difícil hacerlo pero no imposible.

Me siento muy cómodo leyendo el código ensamblador x86, ¿qué pasa con las personas que trabajan con ensamblador durante más de 20 años?

Siempre encontrarás a alguien que sólo necesita un minuto para ver qué está haciendo tu código C# o C...

Solo una nota para cualquiera que lea esto años después: hace unas horas hojeé la licencia Dotfuscator Community Edition (que viene con VS2008) y creo que no se puede usar esta versión para distribuir un producto comercial ni para ofuscar código. de un proyecto que involucra a otros desarrolladores además de usted.Entonces, para los desarrolladores de aplicaciones comerciales, en realidad es solo una versión de prueba.

...recorte...Estos mensajes pueden ser mucho más difícil de interpretar

Sí, pero la edición comunitaria gratuita que viene con Visual Studio tiene una funcionalidad de mapa.Con eso, puede rastrear los nombres de los métodos ofuscados hasta los nombres originales.

Tuve éxito al poner el resultado de un ofuscador gratuito. en un ofuscador diferente.En Dotfuscator CE, solo se incluyen algunos de los trucos de ofuscación, por lo que usar un segundo ofuscador que tenga diferentes trucos lo hace más ofuscado.

Es bastante sencillo realizar ingeniería inversa en una aplicación .net usando reflector .net - ya que la aplicación generará código VB, VC y C# directamente desde MSIL, y es posible extraer todo tipo de gemas útiles.

Los ofuscadores de código ocultan bastante bien el código de la mayoría de los trucos de ingeniería inversa, y sería una buena idea usarlos en código propietario y competitivo que agregue valor a su aplicación.

Hay un artículo bastante bueno sobre ofuscación y está funcionando aquí.

Esta publicación y la pregunta circundante tienen alguna discusión que podría ser valiosa.No es una cuestión de sí o no.

Sí, definitivamente deberías hacerlo.No para protegerlo de una persona determinada, sino para obtener algún beneficio y tener clientes.Por cierto, si llegas a un punto en el que alguien intenta descifrar tu software, eso significa que estás vendiendo un software popular.

El problema es qué herramienta elegir para el trabajo.Consulte mi experiencia con ofuscadores comerciales: https://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market/2356575#2356575

Sí.Usamos el ofuscador BitHelmet.Es nuevo, pero funciona muy bien.

Pero, ¿realmente vale la pena el esfuerzo de seleccionar, comprar y utilizar una herramienta de este tipo?

Encontré Eazfuscator barato (gratis) y fácil de usar:tomó alrededor de un día.Ya tuve pruebas automatizadas exhaustivas (buena cobertura), por lo que creo que podría encontrar cualquier error introducido por la ofuscación.

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