¿Por qué el ejecutable del Dock no genera cadenas útiles, a diferencia de otras aplicaciones de OS X?

Cuando ejecuto el stringscomando en el archivo ejecutable en la mayoría de las 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 Dock sea diferente de la mayoría de los otros programas de Mac?

Puede estar encriptado, comprimido, despojado, ofuscado.
Lo mismo sucede con los ejecutables de algunas otras aplicaciones como Finder, Safari y Transmit. No sé por qué son diferentes, pero según el comentario de @Chealion en 10.6: No más preferencias ocultas fáciles de encontrar: Mac OS X sugiere que probablemente no se deba al menos a la compresión HFS +.

Respuestas (2)

Esto se debe a que muchos archivos binarios de OS X están encriptados. Se descifran en tiempo real mediante "No robar Mac OS X.kext" en su /Sistema/Biblioteca/Extensiones. No sé por qué Apple lo hace. La cadena Obtener información del archivo:

El propósito de este software de Apple es proteger los materiales con derechos de autor de Apple de la copia y el uso no autorizados. No puede copiar, modificar, realizar ingeniería inversa, mostrar públicamente, realizar 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 tiene una licencia válida de Apple para usarlo, destrúyalo o elimínelo inmediatamente de su computadora.

Es muy común comprimir y desmontar 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 espacio adicional que la computadora no necesita cuando se ejecuta. Siempre es una compensación decidir si eliminar la información de depuración de un ejecutable, pero en este caso (o en el kernel u otras funciones principales) puede servir para optimizar la velocidad de ejecución, ya sea que dificulte o no la depuración de problemas o la inserción. en las entrañas de un programa.

Es probable que no sepamos la razón por la que se hizo esto, pero es una práctica común probar las aplicaciones a lo largo del tiempo y seleccionar las que usan la mayor parte del tiempo de la CPU para que solo optimice el código que lo requiere en lugar de optimizarlo todo. .