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 <[EMAIL PROTECTED]>:
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
signature.asc
Description: Esta parte del mensaje está firmada digitalmente

