[C con Clase] ¿Alguien sabe destripar librerías...?

xonly xonly2002 en yahoo.es
Jue Ago 28 17:59:41 CEST 2008


Hola bueno, antes de nada dar las gracias a Steven por ayudarme y hacer que este mensaje sea posible, y felicitar a todos por hacer que esto mejore, ya que es de lo mejorcito que he visto por la red.

Ahora ya en materia, resulta que me encanta complicarme la vida, y a pesar que me encanta el mundo de la programación desde hace mucho tiempo (época del Spectrum y el Amstrad) resulta que no he podido dedicarme demasiado a este mundo, y cada día tengo más ganas de dedicarme en sério, pero resulta que como decía antes me encanta romperme la cabeza en tonterías, y por ello me cuesta tanto avanzar.

CUESTIÓN: porqué resulta que si hago un simple ejemplo que hay para empezar (ese que te trae el Dev-C++ de "Hola mundo") resulta que ocupa nadamenos que 474.990 bytes, resulta que según esto jamás sería posible escribir algo con el amstrad o con el spectrum (los primeros tenían solo 4k) que pasa es que vamos para atrás en lugar de hacia delante, pues parece ser que sí.

El caso es que yo ya tenía mis sospechas pero al ir empezando aprovechando estas mini vacaciones que me ha dado el trabajo, he decidido intentarlo una vez más, y resulta que a las primeras de cambio me he quedado altamente indignado, además de por supuesto tener que tragarte numerosa documentación toda en inglés, que ya nos valdría a algún españolito o latinoamericano el hacer alguna traducción que otra, y sobre todo me he mosqueado muchísimo al ver que el tema este de código abierto, es todo un poco menos que una gran "farsa" al final todo está en librerías ocultas que no dejan ver ni la mitad de código que realmente va debajo de cada #include que hacemos, así que decidí ponerme manos a la obra con "buscar otros métodos" encontrandome gratamente con una actualización de los "viejos asm" con un super programa, el WinASM que tiene muy muy buena pinta, de hecho el mismo ejemplo me ha dejado el ficherito del "hola que tal" en tan solo 2.886 bytes al que después de alguna optimización lo he llegado a conseguir dejar en 2.560 bytes, todo un buen resultado comparandolo con el anterior ejemplo, el caso es que en este caso el WinASM, adolece de los mismos principios que el compilador de C, que tiene "librerías con funciones ocultas".

Para mejorar esto, y en vista de que ningún debugger me resulta satisfactorio, no me ha quedado más remedio que utilizar el Visual Studio (al que me negaba tremendamente debido a que no me gusta precisamente su política de "ocultar" para que me puedas pagar....), pero sin duda, es un debugger genial, en el que al ir dándole a la ejecución paso a paso, te va mostrando las repetidas llamadas a funciones y más funciones, en el que creo haber contado hasta 26 ficheros abiertos, y por supuesto casi todos ellos inentendible e indescifrable para alguien que esta "medio empezando", a pesar de ello, me he dado cuenta de que por lo visto, la salida de datos en pantalla, la toma como si fuera un fichero, en la que como "stdout" tiene la "consola", aunque luego también es super patético y ridículo la conversión que realiza a una supuesta tabla de caracteres UTF que luego encima lo pone fatal, pues resulta que en el ejemplo precisamente del Dev-C++ resulta que en lugar de escribir "¡Hola mundo!" escribe "ÍHola Mundo" confundiendo el signo "¡" por una i mayúscula con acento, totalmente patético...

Vamos a ver señores de windows, que lo único que necesito es:

- activar el modo consola
- escribir literalmete("Hola que tal")
- devolver el control sacando otro mensaje de "pulsa una tecla porque he terminado"
- cerrar la consola

para todo esto se necesitan 474.990 bytes, que no, que no me lo trago, que así no se llega a ningún sitio, que no me puedo permitir comprarme ordenadores todos los días, ni megas ni discos duros... 

En fin que si alguien me puede ayudar (preferiblemente en español) pues encantado, sino pues seguiré peleandome con los debugger y con "los supuestos servicios o APIs" o historias que no me gustaria aprender, pero que veo que no me quedará más remedio.

NOTA: el linux es otra batalla abandonada que tengo, puede que retome esta historia si es que veo que el seguir con las libreríass estas no tiene buen final, pero me temo, que debido a que los supuestos "open source" no son más de lo mismo que lo que estoy viendo en programas de "código abierto" como con Dev-C++ o MinGW, que son las librerías que "intento destripar" sin ningún éxito por cierto, y al final me he tenido que "vender al enemigo". No me gusta tener que practicar esta forma de ingeniería inversa, pero veo que no queda más remedio.


Más información sobre la lista de distribución Cconclase