Presentación en la que podemos ver cómo el SO reconoce los archivos ejecutables. En Windows los ficheros ejecutables tendrán extensión .exe; en GNU/Linux, debemos tener permiso de ejecución en el fichero para poder lanzar su ejecución. El contenido de los ficheros, lo veremos utilizando editores hexadecimales. Utilizaremos las herramientas: HxD
(freeware) en Windows; y Bless Hex Editor (GNU GPL v2) en GNU/Linux. Este tipo de editores, nos permiten ver el contenido en binario de cada uno de los bytes de un archivo, un intento de su traducción a carácter ASCII y su desplazamiento a partir del primer byte del fichero. En los ficheros binarios, podremos ver cómo se incluyen además las instrucciones ejecutables en código máquina, las cadenas de texto formadas por los literales incluidas en el ejecutable. Los binarios, aunque sean de la misma aplicación, son distintos para Windows y GNU/Linux. Una aplicación que esté disponible para ambas plataformas, estará compilada en particular, para cada una de ellas. En los ficheros interpretados, también veremos instrucciones ejecutables, pero en este caso, no serán ejecutadas por una máquina real, sino una máquina virtual, por ejemplo la máquina java. En el caso de java, las instrucciones están codificadas en bytecode
y se reconoce el comienzo de cada instrucción por un número mágico que en hexadecimal es "CAFEBABE
". Los ficheros interpretados, también incorporan las cadenas de texto de los literales; y en el caso de java, el mismo ejecutable interpretado es compilado una vez y puede ejecutarse el mismo fichero en Windows y en GNU/Linux. También vemos el contenido de una librería dinámica. Su contenido es el resultado de la compilación de librerías de funciones, y será ejecutado cuando otro programa invoque a una de sus funciones, su contenido son instrucciones ejecutables en código máquina como en un fichero binario. Por último, vemos el contenido de un fichero script, un guión para shell en GNU/Linux. En este caso, también podremos ver su contenido sin problemas con un editor de texto plano. Si conocemos el lenguaje del script, estaremos viendo sus instrucciones en lenguaje de alto nivel. No son compiladas, sino, directamente ejecutadas una tras otra. Lenguajes de script son: php, python, guiones shell en GNU/Linux, guiones Powershell en Windows, etc.