Saltar al contenido

Estrategia/herramientas de ofuscación de .NET

No olvides que en las ciencias informáticas un problema casi siempre tiene diversas soluciones, pero nosotros te mostraremos lo más óptimo y eficiente.

Solución:

Hemos probado varios ofuscadores. Ninguno de ellos funciona en una gran aplicación de cliente/servidor que utiliza la comunicación remota. El problema es que el cliente y el servidor comparten algunos dlls, y no hemos encontrado ningún ofuscador que pueda manejarlo.

Probamos DotFuscator Pro, SmartAssembly, XenoCode, Salamander y varias aplicaciones pequeñas cuyos nombres se me escapan.

Francamente, estoy convencido de que la ofuscación es un gran truco.

Incluso los problemas que aborda no son del todo un problema real. Lo único que realmente necesita proteger son las cadenas de conexión, los códigos de activación, cosas sensibles a la seguridad como esas. Esta tontería de que otra compañía va a aplicar ingeniería inversa a todo su código base y crear un producto competitivo a partir de él es algo de la pesadilla de un gerente paranoico, no de la realidad.

Estoy ‘hasta las rodillas’ en esto ahora, tratando de encontrar una buena solución. Aquí están mis impresiones hasta ahora.

Xenocódigo – Tengo una licencia antigua para Xenocode2005 que solía usar para ofuscar mis ensamblajes .net 2.0. Funcionó bien en XP y fue una solución decente. Mi proyecto actual es .net 3.5 y estoy en Vista, el soporte me dijo que lo intentara, pero la versión 2005 ni siquiera funciona en Vista (se bloquea), así que ahora tengo que comprar ‘PostBuild2008’ a un precio alucinante. de $1900. Esta podría ser una buena herramienta, pero no voy a averiguarlo. Muy caro.

Reactor.Net – Este es un punto de precio mucho más atractivo y funcionó bien en mi ejecutable independiente. El módulo de licencias también fue bueno y me habría ahorrado un montón de esfuerzo. Desafortunadamente, le falta un key característica y esa es la capacidad de Excluir cosas de la ofuscación. Esto hace que sea imposible lograr el resultado que necesitaba (combinar varios ensamblajes, ofuscar algunos, no ofuscar otros).

Asamblea inteligente – Descargué el Eval para esto y funcionó perfectamente. Pude lograr todo lo que quería y la interfaz fue de primera clase. El precio sigue siendo un poco elevado.

Fuscador de puntos Pro – No se pudo encontrar el precio en el sitio web. Actualmente en conversaciones para obtener una cotización. Suena siniestro.

confusor – un proyecto de código abierto que funciona bastante bien (para confundir a la gente, tal como su nombre lo indica).

Nota: Según los informes, ConfuserEx está “roto” según el problema n.º 498 en su repositorio de GitHub.

De vuelta con .Net 1.1, la ofuscación era esencial: descompilar el código era fácil y podía pasar de ensamblado a IL, a código C# y volver a compilarlo con muy poco esfuerzo.

Ahora con .Net 3.5 no estoy del todo seguro. Intente descompilar un ensamblado 3.5; lo que obtienes está muy lejos de la compilación.

Agregue las optimizaciones de 3.5 (mucho mejor que 1.1) y la forma en que los tipos anónimos, los delegados, etc., se manejan mediante reflexión (recompilarlos es una pesadilla). Agregue expresiones lambda, compilador ‘mágico’ como Linq-syntax y vary C#2 funciona como yield (lo que da como resultado nuevas clases con nombres ilegibles). Su código descompilado termina muy lejos de ser compilable.

Un equipo profesional con mucho tiempo aún podría realizar ingeniería inversa nuevamente, pero lo mismo es true de cualquier código ofuscado. El código que sacaron sería inmantenible y muy probable que tuviera muchos errores.

yo recomendaria key-firmar sus ensamblajes (lo que significa que si los piratas informáticos pueden volver a compilar uno, tienen que volver a compilar todos), pero no creo que la ofuscación valga la pena.

Al final de la web puedes encontrar las explicaciones de otros gestores de proyectos, tú igualmente eres capaz insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *