Cuando ejecuto el strings
en el archivo ejecutable de la mayoría de aplicaciones de OS X (- .app/Contents/MacOS/
-), obtengo una lista de nombres de rutinas, posibles preferencias ocultas, etc. Cuando ejecuto el comando en el ejecutable del Dock, obtengo basura. ¿Qué hace que el ejecutable del Dock sea diferente de la mayoría de los demás programas de Mac?
Respuestas
¿Demasiados anuncios?Esto se debe a que muchos binarios de OS X están encriptados. Son desencriptados en tiempo real por el "Don't Steal Mac OS X.kext" en tu /System/Library/Extensions. No sé por qué lo hace Apple. La cadena Get Info del archivo:
El objetivo de este software de Apple es proteger los materiales protegidos por derechos de autor de Apple frente a copias y usos no autorizados. Usted no puede copiar, modificar, realizar ingeniería inversa, mostrar públicamente, ejecutar públicamente, sublicenciar, transferir o redistribuir este archivo, en su totalidad o en parte. Si ha obtenido una copia de este software de Apple y no dispone de una licencia válida de Apple para utilizarlo, destrúyalo o bórrelo inmediatamente de su ordenador.
Es muy común comprimir y reducir un programa que es una parte esencial del sistema y se ejecuta todo el tiempo.
Las cadenas se dejan para facilitar la depuración, pero ocupan un espacio extra que el ordenador no necesita cuando se ejecuta. Siempre es una disyuntiva decidir si se elimina la información de depuración de un ejecutable, pero en este caso (o en el núcleo u otras funciones básicas) puede servir para optimizar la velocidad de ejecución, aunque dificulte ligeramente la depuración de problemas o la exploración de las entrañas de un programa.
Es probable que no sepamos la razón por la que se ha hecho, pero es una práctica habitual muestrear las aplicaciones a lo largo del tiempo y seleccionar las que utilizan la mayor parte del tiempo de CPU, de modo que sólo se optimice el código que lo requiera, en lugar de optimizarlo todo.