En Mountain Lion, sé que algunas aplicaciones, incluidas todas las aplicaciones en la Mac App Store, están firmadas digitalmente por el desarrollador, por lo que si se modifican, la firma no coincidirá y generará todo tipo de errores (y la situación se intensificará con la próxima versión del sistema operativo ...).
Mi pregunta es ¿qué partes del paquete .app cubre la firma? Si hay algo en los Appname.app/Contents
cambios (incluidos los metadatos, como la fecha de modificación de la Contents
carpeta), ¿eso rompe la firma? ¿Es solo el binario Contents/MacOS
? ¿Están incluidos los .plists en la firma? El Resources
? Como usuario final, ¿qué puedo hackear (si hay algo) sin romper la firma?
macos
code-signing
Daniel
fuente
fuente
Respuestas:
TL; DR Depende del desarrollador elegir qué partes de la aplicación están firmadas y si la manipulación de esas partes resulta o no en acciones cuando se inicia la aplicación. Tienes que usar prueba y error para resolverlo aplicación por aplicación.
Depende en gran medida del desarrollador decidir qué componentes de su paquete de aplicaciones están representados en el sello que se firma antes de entregar su aplicación. Cualquier cosa en el sello es efectivamente a prueba de manipulaciones, ya que es casi imposible modificar estas cosas sin cambiar sus firmas hash. Pero eso no significa que no puedas manipularlos.
La Guía del desarrollador de Apple tiene esto que decir sobre lo que debe firmar:
Además, desde aquí no es necesariamente cierto que tener una firma no válida para una aplicación significa que no se iniciará. La página dice:
Una aplicación puede elegir permitir modificaciones.
Su mejor opción es un enfoque de prueba y error con cualquier aplicación que esté intentando modificar. Es posible que funcione, puede que no. No hay una respuesta siempre verdadera que se pueda dar.
Si se ha firmado una aplicación, puede buscar un
Contents/CodeResources
archivo o unContents/_CodeSignature/CodeResources
archivo en el paquete. Este archivo enumera todos los componentes firmados y sus valores hash esperados en el paquete. Es un buen lugar para comenzar a comprender qué partes de la aplicación un desarrollador considera lo suficientemente críticas como para observar los cambios.fuente
Aunque la pregunta hace referencia específicamente a Mountain Lion, hay un cambio importante en la versión más reciente de macOS. En macOS 10.11 y posterior, se rechazan las firmas que no cubren todo el código.
Consulte la nota técnica TN2206: profundidad de inicio de sesión de código macOS .
fuente