Está en la página 1de 7

Blog de Jorge Pedraza

junio 20, 2010


Ofuscacion en ASP.NET
Archivado en: Aplicaciones Web JorgePedraza @ 12:34 am
Tags: Dotfuscator, Ofuscacin, Reflector, Reflexin
Hola la presente de este articulo es para resaltar de manera general el tema de ofuscacin en el area de
desarrollo web ASP.NET.
En la actualidad la plataforma .NET esta equipada con mecanismo que permite almacenar y explorar los
objetos y tipos de datos contenido en determinado ensamblado. Dicho mecanismo se denomina reflexin
(Reflection), y este se encargar de interrogar los metadatos acerca de un ensamblado, modulo y tipos
relacionado con el CLR.
La reflexin tiene un conjunto de acciones dentro de la plataforma .NET: A nivel de diseo de aplicacin,
en tiempo de ejecucin, medios de exploracin para algunas IDE, etc. Un ejemplo de esto es el navegador
de objeto propio Visual Studio 2010:
A partir de esto y basado en el principio de que la plataforma .NET generalmente trata las aplicaciones
finales como un ensamblado .NET (*.DLL o *.EXE) , cuyo elemento contiene codigo compilado en
lenguaje de maquina virtual especifico, en este caso Lenguaje Intermedio IL para su ejecucin por parte
del CLR de .NET Framework.
Entonce el IL (Lenguaje Intermedio) brinda un mundo de posibilidades para ir ms alla de la reflexin
elemental; una opcin de esto es una via alterna para obtener una descripcin completa del contenido de
una aplicacin, representada en algn lenguaje de programacin de alto nivel. Para logra dicho proposito
se puede contar con la herramienta .NET Reflector.
.NET Reflector Es una herramienta que permite analizar y explorar los ensamblados compilados en .NET,
visualizando en ellos: codigo C#, Visual Basic, IL y otros.
En vista de este argumento, mucho se pregunta como se puede proteger el cdigo de una aplicacin, tal es
el caso de ASP.NET. Para esto existe una series de mecanismos de proteccin, entre los cuales se
menciona la Ofuscacin.
El principio bsico de la ofuscacin es renombrar (cambiar de nombre) las series de identificadores
Ofuscacion en ASP.NET | Blog de Jorge Pedraza http://jorgepedraza.wordpress.com/2010/06/20/ofuscacion-en-asp-net/
1 de 9 17/06/2013 12:56 p.m.
cadenas de caracteres utilizados durante el desarrollo de una aplicacin bien sea a nivel de codigo fuente o
aplicacin compilada en codigo de maquina.
Un ejemplo sencillo puede ser:
public int Suma(int valor1, int valor2)
{
return valor1 + valor2;
}
Ahora aplicando Ofuscacin:
public int a(int a_0, int a_1)
{
return a_0 + a_1;
}
Con esto se busca impedir o hacer ms difcil los intentos de ingeniera reversa y desensamblado de una
aplicacin, para la obtencin del cdigo fuente cercano a la forma original. En ocasiones la ofuscacin,
hace que los programas resultantes sean ms pequeos (aunque puede hacer que los programas sean ms
grandes en otros casos).
Entonce desde aqu empresa como preemptive desarrolla soluciones relacionada con la ofuscacin de
aplicaciones, como es el caso del Ofuscador .NET.
.NET Obfuscator (Ofuscador .NET) conocido tambien como Dotfuscator es una herramienta que ayuda
proteger los programas .NET contra la ingenieria reversa, adems de hacerlos ms pequeo y eficiente.
Versiones de Dotfuscator:
Dotfuscator Software Services Community Edition (Edicin de Instrumentacin y
Endurecimiento de Aplicaciones Ligeras): Esta edicin reducida es incluida en t copia de Visual
Studio. Esta es una solucin ideal para aquellos que requiere el nivel ms basico de protecin de
ingenieria reversa sobre aplicaciones sencillas.
Dotfuscator Commercial Edition (Edicin de Instrumentacin y Endurecimiento de Aplicaciones
Empresariales): La versin de grado comercial de Dotfuscator, pretende apoyar desarrolladores y
organizaciones que requiere el nivel ms alto de protecin para su aplicaciones. S tu desarrolla
software comercial, esta solucin asegura soporte y protecin de la aplicacin.
Dotfuscator Software
Services Community
Edition.
Dotfuscator
Commercial Edition.
Ofuscacin
Renombrar ensamblado cruz
Renombrar Esquemas
Renombrar Prefijos
Mejora de la induccin de
sobrecarga

Ofuscacin Incremental
Reporte HTML de renombramiento
Flujo de control
Ofuscacion en ASP.NET | Blog de Jorge Pedraza http://jorgepedraza.wordpress.com/2010/06/20/ofuscacion-en-asp-net/
2 de 9 17/06/2013 12:56 p.m.
Encriptacin de Cadena
Interfaz de Usuario
Interfaz de usuario Independiente
Integracin con Visual Studio
Linea de comando
MSBuild
Tipos de aplicaciones soportadas
Aplicaciones Office
Aplicaciones SQL CRL
ClickOnce Integrado
SilverLight XAP
Directory WildCard
Mtodos y Tipos genericos
Soporte de ensamblado C++
Administrado (modo mezclado)

Soporte de ensamblado satlite
Construir / Empaquetar
Resigning ensamblado nombrado
fuertemente.

Firmar Authenticode
Eventos pre y pos construicin
Ruta de busqueda de ensamblado
dependiente definido por usuario.

Soporte de Depuracin
Ida y Vuelta de PDB
Traduccin de siguimiento de pila
Optimizacin de Implementacin
Vinculo de ensamblado
Reporte de eliminacin
HTML/XML

Eliminacin de codigo sin Uso
Eliminacin de constante
Avanzada Protecin de aplicacin
Deteccin de manipulacin
Notificaciones de manipulacin
Marca de agua
Administracin de ciclo de vida
Token de vida incrustado
Expiracin sobre accin por defecto
Expiracin sobre accin
personalizado

Ofuscacion en ASP.NET | Blog de Jorge Pedraza http://jorgepedraza.wordpress.com/2010/06/20/ofuscacion-en-asp-net/
3 de 9 17/06/2013 12:56 p.m.
Origen de Token de vida
personalizado

Soporte Inteligente de Tiempo de
ejecucin

Punto Final personalizado
Punto Final RIS Comercial
Punto Final Portal de comunidades
Soporte entrada y salida Opt
Seguimiento de Aplicaciones
Mensajes SSL
Llaves extendidas (carga de datos
personalizado)

Enviar PII
Enviar ID de instancia personalizada
(Numero de serial de aplicacin)

Tipos de mensajes inteligente de
tiempo de ejecucin

Caracterstica Tick Limitado
Caracterstica Duracin Limitado
Prueba de Rendimiento
Perfil de sistema
Precio Incluido gratis en visual
Studio 2010
Solicitud de Couta
Descarga Incluido gratis en visual
Studio 2010
Descarga de evaluacin
Una vez comprendido el marco teorico, se procede a la practica donde se trata con enfoque una solucin
sencilla de un proyecto tipo aplicacin ASP.NET 4.0 en lenguaje C# 4.0 junto a la herramienta
Dotfuscator Software Services Community Edition.
PASOS SENCILLOS PARA USAR DOTFUSCATOR CE (COMMUNITY EDITION):
Se abre una solucin del tipo aplicacin Windows o Web en Visual Studio 2010. 1.
Se pulsa clic sobre la opcin Tools o Herramientas de la barra de menu de Visual Studio 2010. 2.
Se pulsa clic sobre la opcin Dotfuscator Software Services. 3.
Se pulsa boton derecho del mouse sobre el nodo Dotfuscator1, y se hace clic en Add Assemblies. 4.
Se selecciona y abre el ensamblado previamente generado que esta ubicado en la carpeta BIN del
proyecto de dicha solucin.
5.
Ahora se dirige al nodo Configuration Options, nodo Renaming, Pestaa Exclusions. Finalmente
desde aqu se marca aquellos elementos de codigo que no desea Osfucar o sea excluir.
6.
Se pulsa clic en el boton en forma de Triangulo situado en la barra de herramienta o la opcin Build
Project (Ctrl+B) del Menu Build.
7.
Finalmente nuestro ensamblado .NET ofuscado esta situado en la carpeta, por ejemplo:
C:\Dotfuscated.
8.
PUNTOS IMPORTANTES DE DOTFUSCATOR CE CON ASP.NET:
Ofuscacion en ASP.NET | Blog de Jorge Pedraza http://jorgepedraza.wordpress.com/2010/06/20/ofuscacion-en-asp-net/
4 de 9 17/06/2013 12:56 p.m.
Cuando planifique la ofuscacin de un ensamblado .NET por ejemplo *.DLL con la herramienta
Dotfuscator CE, cercirese que la opcin Library Mode este desmarcada, ya que esta opcin le indica al
Dotfuscator que los elementos publicos de la clase no sean renombrados, y as se mantenie intacto la
accesibilidad de los mismos a llamadas externas.
Como bien se conoce la estructura de un proyecto de aplicacin ASP.NET; en una pagina ASPX se va
encontrar vinculado tres archivos; un ejemplo esto es : Pagina.ASPX, Pagina.ASPX.cs,
Pagina.ASPX.designer.cs, los cuales durante la compilacin son procesados y vinculado en un archivo de
extension *.DLL y Pagina Web ASPX (Pagina.ASPX).
Ahora s procede a ofuscar el archivo con extensin *.DLL, se debe tomar como precaucin la exclusin
primordial de los nombres de paginas, controles y eventos que estn referenciados en dicho ensamblado
.NET los cuales tiene relacin con nuestro pagina ASPX y as se logra mantener vinculado los
identificadores usados en el desarrollo con la pagina ASPX.
Despus de ofuscar el archivo *.DLL, se obtiene el siguiente resultado visualizado a travs de la
herramienta Reflector .NET:
Finalmente se puede colocar el archivo con extensin *.dll en la carpeta bin y las paginas ASPX
relacionadas en la raz de determinado directorio de aplicacin del IIS.
Otro punto que se puede resaltar en este tema, es la gestin de aplicaciones escrita en el Lenguaje Visual
Basic 2010. Para el cual se va encontrar limitado de ciertas caractersticas mencionadas previamente para
Dotfuscator CE. Por ejemplo las aplicaciones bien sea del tipo Windows o Web en Visual Basic van a
Ofuscacion en ASP.NET | Blog de Jorge Pedraza http://jorgepedraza.wordpress.com/2010/06/20/ofuscacion-en-asp-net/
5 de 9 17/06/2013 12:56 p.m.
estar limitada para la ofuscacin, ya que estas internamente gestiona el uso de mtodos y tipos genericos a
travs del objeto My intrnseco de Visual Basic. Entonce para estos casos se sugiere usar la versin sn
limitaciones de Dotfuscator (Dotfuscator Commercial Edition).
En resumen se puede notar que dentro del desarrollo de aplicaciones .NET, vamos a encontrar un tema de
gran importancia como es la proteccin de la propiedad intelectual, a travs de ciertos mecanismos como
la ofuscacin de codigo. Y esto puede ser posible con la herramienta Dotfuscator de la empresa
preemptive.
Anexo Cdigo fuente para ilustrar el tema: TestObfuscator (ASP.NET 4.0, C# 4.0)
Se el primero en decir que te gusta.
Comentarios (3)
3 comentarios
Un comentario, creo que est errneo el comentario Cuando planifique la ofuscacin de un
ensamblado .NET por ejemplo *.DLL con la herramienta Dotfuscator CE, cercirese que la opcin
Library Mode este desmarcada, debera ser Library Mode marcado.
Citando como fuente la informacin de la documentacin propia de la herramienta DotOfuscator.
Library mode: This setting tells Dotfuscator that the selected input assembly constitutes a library.
For obfuscation purposes, a library is defined as an assembly that is referenced from other
components not specified as one of the inputs in this run. When an assembly is obfuscated in
Library Mode, publicly visible items are not renamed, thus keeping your public API accessible to
external callers.
Comentario por sergio octubre 27, 2011 @ 7:07 am | Responder
Hola Sergio.
1.
About these ads
Ofuscacion en ASP.NET | Blog de Jorge Pedraza http://jorgepedraza.wordpress.com/2010/06/20/ofuscacion-en-asp-net/
6 de 9 17/06/2013 12:56 p.m.
Gracias por t comentario!
T explico: S revisa bien el articulo, yo coloque un titulo previo denominado: PUNTOS
IMPORTANTES DE DOTFUSCATOR CE CON ASP.NET que se relaciona con el
comentario resaltado por ti previamente.
Una solucin ASP.NET Web Application, por ejemplo son: Paginas.aspx + WebApp.DLL
(Biblioteca de Vinculo Dinmico) bajo .NET Framework.
S la intencin es Ofuscar dicha Biblioteca (WebApp.DLL) se debe desmarca Library mode.
Por que?
Significado de Library mode segn la documentacin de PreEmptive es:
Esta opcin le indica a Dotfuscator que el ensamblado de entrada seleccionado constituye una
biblioteca. Para fines de ofuscacin, una biblioteca se define como un conjunto que se hace
referencia en otros componentes no especificados como una de las entradas en esta ejecucin.
Cuando un Assembly est ofuscado en modo de biblioteca (Library mode), elementos visibles
pblicamente No se renombra, manteniendo su API pblica accesible a los llamadores
externos.
Entonces s verifica el codigo de ejemplo, se esta usando un clase llamada Matematica donde
hay un elemento visiblemente publico Suma que ser generado dentro del resultado
WebApplication3.dll, para el cual se necesita Ofuscar (renombrar la clase Matematica y su
mtodo pblico) en dicho resultado y demostrar la ofuscacin de una Aplicacin Web
ASP.NET.
Bueno eso es todo por lo momento.
Espero que esto sea de utilidad para aclara la duda generada.
Saludos.
Comentario por jorgepedraza octubre 27, 2011 @ 12:39 pm | Responder
Gracias por la aclaracin, fue un error mio de interpretacin.
Un saludo
Comentario por Sergio noviembre 17, 2011 @ 5:40 pm | Responder
2.
RSS feed para los comentarios de esta entrada. TrackBack URI
Deja un comentario
Pginas
Acerca de
Ofuscacion en ASP.NET | Blog de Jorge Pedraza http://jorgepedraza.wordpress.com/2010/06/20/ofuscacion-en-asp-net/
7 de 9 17/06/2013 12:56 p.m.

También podría gustarte