2011-09-21 4 views
5

Vorrei rimuovere la firma digitale da un'app Mac che è stata firmata con il codesign. C'è un'opzione non documentata per il codesign, --remove-signature, che con il suo nome sembra essere quello di cui ho bisogno. Tuttavia, non riesco a farlo funzionare. Mi rendo conto che non è documentato, ma potrei davvero usare la funzionalità. Forse sto facendo qualcosa di sbagliato?bug? in codesign --remove-signature feature

codesign -s MyIdentity foo.app 

opere normalmente, firmando l'applicazione

codesign --remove-signature foo.app 

fa l'attività del disco per alcuni secondi, poi dice

foo.app: invalid format for signature 

e foo.app è cresciuto fino a 1,9 GB !!! (In particolare, è l'eseguibile in foo.app/Contents/Resources/MacOS che cresce, da 1,1 MB a 1,9 GB.)

La stessa cosa accade quando provo a firmare/non firmare uno strumento di supporto binario invece di un .app.

Qualche idea?


Sfondo: questa è la mia app; Non sto cercando di sconfiggere la protezione della copia o qualcosa del genere.

Desidero distribuire un'app firmata in modo che ogni aggiornamento dell'app non necessiti dell'approvazione dell'utente per leggere/scrivere le voci dell'app nel portachiavi. Tuttavia, alcune persone hanno bisogno di modificare l'app aggiungendo la propria cartella in/Risorse. In tal caso, la firma diventa non valida e l'app non può utilizzare le proprie voci del portachiavi.

L'app può rilevare facilmente se si è verificata questa situazione. Se l'app potesse rimuovere la sua firma, tutto andrebbe bene. Quelle persone che fanno questa modifica dovrebbero dare l'autorizzazione modificata, ora non firmata per usare il portachiavi, ma per me va bene.

risposta

0

Sono d'accordo che succede qualcosa di strano quando hai fatto --remove-signature.

Tuttavia, anziché cercare di annullare la firma del codice, è necessario modificare il modo in cui l'utente inserisce file aggiuntivi nello Resources. Invece, designare un certo percorso, di solito

~/Library/Application Support/Name_Of_Your_App/ 

o forse

~/Library/Application Support/Name_Of_Your_App/Resources/ 

e chiedere all'utente di mettere i file in più lì. Quindi, nel codice, controllare sempre la directory oltre ai file nello Resources quando è necessario leggere un file.

+0

L'utente può avere più copie della app con diversi file aggiuntivi, e possono spostare l'applicazione in giro. Se i loro file extra sono nell'app, tutto funziona. Altrimenti, devo in qualche modo tenere traccia dei diversi file in base alla posizione dell'app, e quindi se l'app si sposta smette di funzionare. Complessivamente un casino. – user532477

-2

Credo che è possibile rimuovere la firma semplicemente eliminando la cartella _CodeSignature nel pacchetto App.

+0

non solo, anche il binario è firmato – dreamlab

8

un po 'tardi, ma ho aggiornato uno strumento di pubblico dominio chiamato unsign che modifica gli eseguibili per cancellare le firme.

https://github.com/steakknife/unsign

+1

Il codice di promozione che hai creato (anche parzialmente) va bene, a patto che tu spieghi chiaramente come l'OP può usarlo per fare ciò che stanno cercando di fare. Altrimenti, è considerato spam. – Louis