En .Net es muy fácil decompilar una DLL y obtener el código fuente original (sin comentarios y toda la pesca, pero el código fuente, perfectamente funcional). El caso es que ejecutando una simple búsqueda en Bing se obtiene cómo resultado multitud de herramientas que permiten hacer esto.
¿Cómo evitarlo? Con las herramientas de ofuscación de código. Estas herramientas no impedirán la decompilación del código, pero sí que harán que sea prácticamente imposible entenderlo, y por tanto editarlo y utilizarlo para las malas artes de un programador mal intencionado. La “mala intención” podría consistir en sacar un juego o programa muy parecido al que hemos hecho nosotros.
Siempre es desagradable que copien tu trabajo… más ahún cuando has pasado muchas horas de desarrollo en él. Así que es necesario tener en cuenta el uso de las herramientas de ofuscación de código.
No me habría propuesto escribir este artículo sinó fuera porque en uno de los MSDN Flash de Windows Phone se recomendaba el uso de estas herramientas. No se si para evitar que los testers de Microsoft tubieran la tentación de decompilar alguna DLL, o bien simplemente para evitar que algún posible bug que causase la posibilidad de descargar un XAP a un usuario mal intencionado trajese consecuencias peores.
En cualquier caso, me parece un buen consejo ofuscar el código. ¿Cómo lo hacemos? La própia instalación de Visual Studio trae su herramienta de ofuscación (sólo las ediciones profesionales para arriba). Usar este ofuscador ya se ha escrito en mil sitios, por ejemplo este: http://forum.codecall.net/tutorials/6391-tutorial-visual-studio-2008-obfuscating-dotfuscator.html, así que no voy a repetirme.
Lo que sí me gustaría añadir es el “descubrimiento” de un ofuscador genialmente sencillo, y además gratuito, que encontré hace unos días buscando una de estas herramientas. Se llama EazFuscator.net, y a pesar de lo complicado de su nombre, no creo que exista otro más fácil de usar. Esto es así porque simplemente tenemos que arrastrar y soltar un proyecto sobre la aplicación para ofuscar la DLL resultante de la compilación en modo release del mismo
Aquí podéis leer más acerca de este ofuscador de código y también descargarlo:
http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx