none
obfuscation: Pero... ¿Que es realmente 'ofuscar' y como funciona? ¿Que es Microsoft Phoenix obfuscator? RRS feed

  • Pregunta

  •  

    Quisiera que alguien me explicara que es la ofuscación en .net y como funciona. Tengo algún conocimiento, probablemente erróneo, por favor que alguien me corriga si me equivoco:

    Ofuscar: Hacer que el P-código o "Pseuodo ejecutable" generado por un compilador .NET sea del todo intratable por la ingeniería inversa, es decir, que dado un ejecutable .net no se pueda desensamblar para llegar a su codigo fuente original. ¿Cierto??????????

    ¿Que es Microsoft Phoenix obfuscator? Alguien de la comunidad hispanoparlante lo sabe?

     

    ¿Que puede pasar si no ofusco mi codigo? ¿Y si lo ofusco, limito su transportabilidad a otras plataformas como mono-linux y similares??????

     

    martes, 9 de septiembre de 2008 15:08

Todas las respuestas

  • Efectivamente, desde que cree esta entrada nadie ha contestado, lo que pone de manifiesto que de tantos experimentados desarrolladores que circulamos por estos foros, ninguno estamos al 100% seguros de que es ofuscar.

    Creo que con esta conclusión alguien de Microsoft debería replantearse el hacernos llegar algún articulo traducido de US o de latam para ponernos al día.

    martes, 23 de septiembre de 2008 6:53
  •  

    la ofuscación en .net es lo mismo que en cualquier otra plataforma ya que es un concepto genérico.

     

    Ofuscar segun la RAE:

    (Del lat. offuscāre).

     

    1. tr. Deslumbrar, turbar la vista. U. t. c. prnl.

     

    2. tr. Oscurecer y hacer sombra.

     

    3. tr. Trastornar, conturbar o confundir las ideas, alucinar. U. t. c. prnl.

     

     

    Y tal cual aplica en terminos de código ejecutable.

     

    La idea fundamental es evitar que nuestro codigo ya compilado (  llamese ensamblado, ejecutable etc ) bien sea a código de maquina ( asm, C, c++)o codigo intermedio tipo IL ( C#, VB.NEt etc) o de tipo bytecode (java) no pueda ser analizado para obtener el codigo original nuevamente.

     

    Sin embargo esto es imposible, todo codigo (o más bien casi todo codigo) intermedio o de maquina puede ser analizado par obtener su correspondiente equivalente en un lenguaje de nivel superior ... eso lo hacen los descompiladores tipo Reflector... o lo puede hacer un programador experimentado .

     

    La ofuscación ( en nuestros  terminos) trata de dificultar la tarea de ingenieria inversa por parte de un programador experimentado o una herramienta de descompilacion, existen muchas tecnicas de ofuscacion y todas tratan básicamente de 'ensuciar' el código compilado de tal forma que las herramientas o los programadores no logren facilmente realizar la ingenieria inversa.

     

    A la final es una perdida de tiempo pues si alguien se lo propone tarde o temprano lograra desenmarañar el codigo generado para obtener un código de alto nivel más legible que haga lo mismo.

     

    Herramientas hay muchas...

     

    Que pasaria? normalmente nada, pero en mi opinion es un desgaste innecesario e improductivo ponerce en esos haberes... porque crees que nisiquiera el código de los sistemas operativos esta ofuscado...

     

    saludos,

     

    espero haberte sido de ayuda...

    martes, 30 de septiembre de 2008 23:21
  • Gracias Juan Carlos

    Si, me has sido de ayuda confirmando mis "sospechas". Pero hay una cosa que no tengo clara, si ofusco el codigo .net de una aplicación (por ejemplo en VB.NET) ¿Podría hacer esa aplicación transportable a Linux con Mono project?

     

    Gracias

    miércoles, 1 de octubre de 2008 6:46
  • Por supuesto, la ofuscación normalmente no debe modificar la funcionalidad del código, salvo no se que cosa extraña usen.

    Para ese tipo de situaciones debes tener en cuenta no programar haciendo llamado a codigo dependiente de la plataforma como las APIS de windows o llamados al kernel de unix.


    No olvides marcar las respuestas que te hayan sido de ayuda.

    miércoles, 1 de octubre de 2008 13:47
  • Hola Juan Carlos,
    que buena respuesta, te voy a hacer una pregunta aprovechando que tengo una necesidad similar, con que herramientas podria leer un .exe o un .dll? con la vs 2008 puedo hacer algo o debo buscar alguna aparte?

    Gracias por tu interes

    jin
    jueves, 25 de junio de 2009 1:19