2011-09-21 17 views
5

Me gustaría eliminar la firma digital de una aplicación de Mac que ha sido firmada con codesign. Hay una opción no documentada para codesign, --remove-signature, que por su nombre parece ser lo que necesito. Sin embargo, no puedo hacer que funcione. Me doy cuenta de que no está documentado, pero realmente podría usar la funcionalidad. Tal vez estoy haciendo algo mal?error? in codesign --remove-signature feature

codesign -s MyIdentity foo.app 

trabajos normalmente, firmando la aplicación

codesign --remove-signature foo.app 

hace la actividad del disco durante varios segundos, luego dice

foo.app: invalid format for signature 

y foo.app ha crecido hasta 1,9 GB !!! (Específicamente, es el ejecutable en foo.app/Contents/Resources/MacOS que crece, de 1.1 MB a 1.9 GB)

Lo mismo ocurre cuando intento firmar/anular una herramienta de soporte binario en lugar de una .app.

¿Alguna idea?


Antecedentes: esta es mi propia aplicación; No estoy tratando de vencer la protección de copia ni nada de eso.

Me gustaría distribuir una aplicación firmada para que cada actualización de la aplicación no necesite la aprobación del usuario para leer/escribir las entradas de la aplicación en el llavero. Sin embargo, algunas personas necesitan modificar la aplicación agregando su propia carpeta a/Recursos. Si lo hacen, la firma se vuelve inválida y la aplicación no puede usar sus propias entradas de Llaveros.

La aplicación puede detectar fácilmente si esta situación ha sucedido. Si la aplicación pudiera eliminar su firma, todo estaría bien. Esas personas que hacen esta modificación tendrían que dar permiso a la aplicación modificada, ahora sin firmar, para usar el llavero, pero eso está bien conmigo.

Respuesta

0

Estoy de acuerdo en que algo extraño sucede cuando lo hizo --remove-signature.

Sin embargo, en lugar de intentar des-codificar-firmar, debe cambiar la forma en que su usuario pone archivos adicionales en el Resources. En su lugar, designar un cierto camino, por lo general

~/Library/Application Support/Name_Of_Your_App/ 

o tal vez

~/Library/Application Support/Name_Of_Your_App/Resources/ 

y pedir al usuario que poner los archivos adicionales allí. Luego, en su código, siempre verifique el directorio además de los archivos en el Resources cuando necesite leer un archivo.

+0

El usuario puede tener varias copias de la aplicación con diferentes archivos adicionales, y puede mover la aplicación alrededor. Si sus archivos adicionales están en la aplicación, todo funciona. De lo contrario, tengo que hacer un seguimiento de los diferentes archivos según la ubicación de la aplicación y, si la aplicación se mueve, deja de funcionar. En conjunto, un desastre. – user532477

-2

Creo que puede eliminar la firma simplemente eliminando la carpeta _CodeSignature en el paquete de la aplicación.

+0

no solo, el código binario también está firmado – dreamlab

8

Un poco tarde, pero he actualizado una herramienta de dominio público denominado unsign que modifica ejecutables para limpiar firmas.

https://github.com/steakknife/unsign

+1

Promover el código que ha creado (incluso parcialmente) está bien, siempre y cuando se detalle claramente cómo el OP puede usarlo para hacer lo que están tratando de hacer. De lo contrario, se considera correo no deseado. – Louis

Cuestiones relacionadas