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