In Mountain Lion weiß ich, dass einige Anwendungen, einschließlich aller Anwendungen im Mac App Store, vom Entwickler digital signiert sind. Wenn sie geändert werden, stimmt die Signatur nicht überein und es treten alle möglichen Fehler (und die Situation) auf wird mit der nächsten Version des Betriebssystems eskalieren ...).
Meine Frage ist, welche Teile des .app-Bundles umfasst die Signatur? Wenn irgendetwas in Appname.app/Contents
Änderungen (einschließlich Metadaten, wie das geänderte Datum für den Contents
Ordner), geht der Bruch der Signatur? Ist es nur die Binärdatei Contents/MacOS
? Sind die .plists in der Signatur enthalten? Die Resources
? Was kann ich als Endbenutzer (wenn überhaupt) hacken, ohne die Signatur zu brechen?
macos
code-signing
Daniel
quelle
quelle
Antworten:
TL; DR Es ist Sache des Entwicklers, auszuwählen, welche Teile der App signiert sind und ob Änderungen an diesen Teilen zu Aktionen führen, wenn die App gestartet wird. Sie müssen Trial-and-Error verwenden, um dies App für App herauszufinden.
Es ist weitgehend Sache des Entwicklers, zu entscheiden, welche Komponenten in seinem Anwendungspaket in dem Siegel enthalten sind, das unterzeichnet wird, bevor sie ihre Anwendung ausliefern. Alles in dem Siegel ist fälschungssicher, da es meist unmöglich ist, diese Dinge zu ändern, ohne ihre Hash-Signaturen zu ändern. Das heißt aber nicht, dass man sie nicht manipulieren kann.
Im Apple Developer Guide steht, was Sie unterschreiben sollten:
Auch von hier aus ist es nicht unbedingt wahr, dass eine ungültige Signatur für eine Anwendung dazu führt, dass sie nicht gestartet werden kann. Die Seite sagt:
Eine Anwendung kann Änderungen zulassen.
Ihre beste Wahl ist ein Versuch-und-Irrtum-Ansatz mit jeder Anwendung, die Sie ändern möchten. Es kann funktionieren, es kann nicht. Es gibt keine immer wahre Antwort, die gegeben werden kann.
Wenn eine App signiert wurde, können Sie nach einer
Contents/CodeResources
Datei oder einerContents/_CodeSignature/CodeResources
Datei im Bundle suchen . Diese Datei listet alle signierten Komponenten und ihre erwarteten Hashwerte im Bundle auf. Es ist ein guter Ort, um zu verstehen, welche Teile der Anwendung ein Entwickler als kritisch genug erachtet, um auf Änderungen zu achten.quelle
Obwohl sich die Frage speziell auf Mountain Lion bezieht, gibt es eine wichtige Änderung in der neueren Version von macOS. Unter macOS 10.11 und höher werden Signaturen abgelehnt, die nicht den gesamten Code abdecken.
Siehe Technischer Hinweis TN2206 - macOS Code Signing In Depth .
quelle