[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] ¿Descompilar?.



Esta mañana a las 11 por error di a responder y no a responder a todos,
por tanto solo Pablo Barulio pudo leer mi respuesta que ahora publico a
la lista entera por si puedo aportar algo a lo ya dicho por todos
vosotros.

En concreto este tema me interesó mucho hace tiempo y me parece
superacertado el comentario del compañero Luis Rodrigo Gallrdo que viene
a decir algo parecido a mi post.

El vie, 05-05-2006 a las 10:50 +0200, Pablo Braulio escribió:
> Buenos días a todos.
> 
> Perdonar por el OT, pero me gustaría saber la opinión de la gente con amplios 
> conocimientos de programación sobre esto.
> 
> El otro día tuve una conversación con dos amigos sobre linux y el software 
> libre. 
> 
> Primero hay que decir que mis amigos no saben de informática y sus 
> conocimientos se limitan al de un usuario de windows xp doméstico.
> 
> La cuestión es que ellos saben que uso linux y que me gusta el software libre, 
> etc, y me preguntaron porque se dice que es tan bueno y se debería usar.
> 
> Yo les conté en que consistía, sus ventajas, etc., Pero al llegar al punto que 
> dije "que se tenía acceso al código fuente", me tocó explicar que era este y 
> en que consistía compilar. Añadiendo, que la desventaja de sistemas como 
> Windows (para que lo tomaran como ejemplo), es que no se tenía acceso al 
> código.
> 
> Llegado a este punto, vino la pregunta del millón: ¿y no se puede 
> descompilar?.
> 
> Sinceramente, me quedé mudo, pues no fui capaz de darle una respuesta fundada, 
> y realmente desconozco si esto es posible.
> 
> Mi respuesta, fue que no, pues no conocía ningún descompilador (¿?), y que de 
> haberlo sería difícil traducir el binario en el lenguaje que lo compiló 
> originalmente por la cantidad de lenguajes de programación que existen.
> 
> Es muy posible que haya dicho una burrada de las que hacen historia, pero fue 
> lo único que se me ocurrió en ese momento, y llevo pensando desde entonces en 
> esa pregunta.
> 
> Para los expertos, ¿existen descompiladores?, ¿es posible descompilar?, 
> ¿existen el ratoncito pérez?. XDD
> 
> Perdonar por el OT, y al que le apetezca que conteste. De lo contrario lo 
> entiendo.
> 
> 

2006/5/5, Pablo Braulio <brulics@gmail.com>: 
        El Viernes, 5 de Mayo de 2006 12:13, Víctor J. González
        escribió:
        > Existe los desensambladores o "debugger" (mostrar instrucción
        por 
        > instrucción, todo el código en ensamblador) y de ahí, yo he
        llegado a
        > conocer traductores a C.
        > El código es bastante ilegible con bucles o estructuras
        enrebesadas,
        > lógicamente. Pues no está para que sea entendible para
        nosotros, está 
        > economizado (simplificado añadiendo líneas de código pues un
        ordenador
        > "solo es un gran sumador" no interpreta un if, solo interpreta
        un si a+b=0
        > o no es 0, saltar a...) al máximo para que sea utilizado por
        una máquina. Y 
        > hay un nuevo problema, mi variable llamada "auxiliar" por
        ejemplo, o
        > variable "bandera" "pivote" "contador" ahora se llama 0001,
        0002, AEF36,
        > EFF9 por ejemplo, y CUESTA MUCHO entender un código si no es
        tuyo, si está 
        > en "clave" pues no lees los nombres originales de las
        variables (Estos
        > desaparecieron antes de la compliación, en el OBJ) y por
        supuesto, los
        > comentarios ni están.
        >
        > Espero no haberte desanimado, en linux es código abierto por
        que antes de 
        > hacer un apt-get (que te bajas un BINARIO) puedes encontrar
        por ahí el
        > código fuente, no por que puedas pasar del binario al código
        fuente (que
        > como he dicho, si se puede peeeeeeeeeeeero me abstengo a decir
        de nuevo de 
        > que manera).
        
        Mas claro imposible.
        
        No es que yo pretenda ponerme a descompilar o meterme en estos
        "fregaos". Lo
        que ocurre es que, como ya he dicho, un "inculto en estas
        materias" me ha 
        hecho pensar en el porque de todo este tema.
        
        Gracias por la aclaración.
        --
        Saludos.
        Pablo
        ------------
        Jabber: bruli(at)myjabber(to)net
        Fingerprint: 944D 10DA 4C10 08D1 574D  4B48 3BC1 CEF7 F222 EB1D 
        
        

Si, es un fregao, pero si has visto algo de ensamblador, puedes cambiar
un JNZ (jump not zero "si error, salta a lo que venga después, si no
continúa") por un JZ (jump if zero "salta si el caso contrario, si no
continúa") por ejemplo, y saltarte la protección de un programa justo en
el momento en el que te pida la clave y haga la comparación. Por ponerte
un ejemplo bastante sabroso.   Éstos existen en casi todos los sistemas
operativos y también te permiten ver cosas que no deberíamos conocer
(claves, llamadas extrañas etc..) <-- algo mucho mas facil si es código
abierto y lees ojeas los fuentes, cosa que en micro$oft no se puede
hacer y te tienes que creer lo que te digan.   Fregao fregao, reconozco
y aviso que son las interrupciones, los registros de la memoria y las
direcciones en hexadecimal totales y parciales si no estás acostumbrado
a ellas, pero para trastear no se necesita saber de esas cosas :)
tranquilo, solo observar y tener un pequeño diccionario de ensamblador
al lado, el resto es coser y cantar. (Espero haberte animado). 
  Salu2, Vic.           ....                             JMP etiqueta

Los saltos condicionales son más versátiles. El salto solo se produce si
se dan ciertas condiciones, de lo contrario la secuencia del programa
continúa de forma normal. Cada microprocesador en concreto tiene sus
propios saltos condicionales. El juego puede ser muy extenso. Algunos de
los más comunes son:

                            JE Salta si igual

                            JG Salta si mayor

                            JGE Salta si mayor o igual

                            JL Salta si menor

                            JLE Salta si menor o igual

                            JZ Salta si es igual a cero

                            JNZ Salta si no cero

                            JNE Salta si no igual (igual a JNZ)

                            JS Salta si no signo (si es positivo)

                            JS Salta si signo (si es negativo)

Para evaluar la condición tenemos las instrucciones lógicas y
aritméticas, pero las más comunes son las específicamente de
comparación:

CMP Compara operandos

TEST Test/Comparación lógica de los dos operandos

Attachment: signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente


Reply to: