No Mountain Lion, eu sei que alguns aplicativos, incluindo todos os aplicativos na Mac App Store, são assinados digitalmente pelo desenvolvedor, de modo que, se forem modificados, a assinatura não corresponderá e causará todo tipo de erro (e a situação será escalado com a próxima versão do sistema operacional ...).
Minha pergunta é quais partes do pacote .app a assinatura cobre? Se nada em Appname.app/Contents
mudanças (incluindo metadados, como a data modificada para a Contents
pasta), isso quebra a assinatura? É apenas o binário Contents/MacOS
? Os .plists estão incluídos na assinatura? O Resources
? Como usuário final, o que posso hackear (se houver) sem quebrar a assinatura?
macos
code-signing
Daniel
fonte
fonte
Respostas:
TL; DR Cabe ao desenvolvedor escolher quais partes do aplicativo são assinadas e se a violação ou não dessas partes resulta em ações quando o aplicativo é iniciado. Você deve usar tentativa e erro para descobrir isso app a aplicativo.
Depende do desenvolvedor decidir quais componentes do pacote de aplicativos são representados no selo que é assinado antes de entregar o aplicativo. Qualquer coisa no selo é à prova de violação, pois é quase impossível modificar essas coisas sem alterar as assinaturas de hash. Mas isso não significa que você não possa mexer com eles.
O guia do desenvolvedor da Apple tem a dizer sobre o que você deve assinar:
Também a partir daqui , não é necessariamente verdade que ter uma assinatura inválida para um aplicativo significa que ele falhará ao iniciar. A página diz:
Um aplicativo pode optar por permitir modificações.
Sua melhor aposta é uma abordagem de tentativa e erro com qualquer aplicativo que você esteja tentando modificar. Pode funcionar, ou não. Não existe uma resposta sempre verdadeira que possa ser dada.
Se um aplicativo foi assinado, você pode procurar por um
Contents/CodeResources
arquivo ou umContents/_CodeSignature/CodeResources
arquivo no pacote. Este arquivo lista todos os componentes assinados e seus valores de hash esperados no pacote configurável. É um bom lugar para começar a entender quais partes do aplicativo um desenvolvedor considera críticas o suficiente para observar as mudanças.fonte
Embora a pergunta faça referência especificamente ao Mountain Lion, há uma mudança importante na versão mais recente do macOS. No macOS 10.11 e posterior, as assinaturas que não cobrem todo o código são rejeitadas.
Consulte a Nota técnica TN2206 - Profundidade de entrada do código do macOS .
fonte