TL; DR Do programisty należy wybór, które elementy aplikacji są podpisane i czy manipulowanie tymi elementami powoduje jakiekolwiek działania podczas uruchamiania aplikacji. Musisz użyć wersji próbnej i błędu, aby dowiedzieć się na podstawie aplikacji.
To w dużej mierze zależy od dewelopera, aby zdecydować, które elementy w ich pakiecie aplikacji są przedstawione w pieczęci, która zostanie podpisana przed dostarczeniem aplikacji. Wszystko, co znajduje się w pieczęci, jest skutecznie zabezpieczone przed manipulacją przez osoby niepowołane, ponieważ w większości przypadków niemożliwe jest zmodyfikowanie tych rzeczy bez zmiany sygnatur skrótu. Ale to nie oznacza, że nie można ich modyfikować.
Przewodnik dla programistów Apple ma to do powiedzenia na temat tego, co powinieneś podpisać:
Powinieneś podpisywać każdy plik wykonywalny w swoim produkcie, w tym
aplikacje, narzędzia, ukryte narzędzia pomocnicze, narzędzia i tak dalej.
Podpisywanie pakietu aplikacji obejmuje jego zasoby, ale nie jego
podskładniki, takie jak narzędzia i wiązki cząstkowe. Każdy z nich musi być
podpisany niezależnie.
Jeśli twoja aplikacja składa się z dużej części interfejsu użytkownika z jednym lub więcej małym
narzędzia pomocnicze, które próbują przedstawić pojedynczą twarz użytkownikowi, możesz
uczynić je nieodróżnialnymi od podpisywania kodu, dając im wszystkie
dokładnie ten sam identyfikator podpisywania kodu. (Możesz to zrobić, upewniając się
że wszystkie mają taką samą wartość CFBundleIdentifier w swoich
Info.plist lub za pomocą opcji -i w poleceniu codeign na
przypisz ten sam identyfikator.) W takim przypadku wszystkie składniki programu
mieć dostęp do tych samych elementów pęku kluczy i zatwierdzać jako takie same
program. Zrób to tylko wtedy, gdy zaangażowane programy mają naprawdę tworzyć
pojedynczy podmiot, bez żadnych różnic.
Uniwersalny plik binarny (pakiet lub narzędzie) automatycznie ma indywidualny
sygnatury stosowane do każdego komponentu architektury. To są
niezależny, a zwykle tylko rodzima architektura na końcu
system użytkownika został zweryfikowany.
W przypadku pakietów instalacyjnych (pakiety .pkg i .mpkg) wszystko
jest niejawnie podpisane: archiwum CPIO zawierające ładunek,
Archiwum CPIO zawierające skrypty instalacyjne i zestawienie materiałów
(BOM) każdy ma hash zarejestrowany w nagłówku XAR i ten nagłówek w
kolej jest podpisana. Dlatego, jeśli zmodyfikujesz skrypt instalacyjny (dla
przykład) po podpisaniu pakietu, podpis będzie
nieważny.
Możesz także podpisać swoje wtyczki i biblioteki. Chociaż
nie jest obecnie wymagane, będzie w przyszłości, a nie ma
wadą posiadania podpisów na tych komponentach.
W zależności od sytuacji, codeign może dodać do twojego pliku wykonywalnego Mach-O
plik, dodaj do niego rozszerzone atrybuty lub utwórz nowe pliki w swoim
Katalog zawartości pakietu. Żaden z twoich innych plików nie jest modyfikowany.
Również stąd niekoniecznie jest prawdą, że posiadanie nieprawidłowego podpisu dla aplikacji oznacza, że nie uda się jej uruchomić. Strona mówi:
To zależy od systemu lub programu, który jest uruchamiany lub ładowany
kod do decydowania, czy weryfikować podpis, a jeśli tak, to do
określić, jak ocenić wyniki tej weryfikacji.
Aplikacja może zezwolić na modyfikacje.
Najlepszym rozwiązaniem jest metoda prób i błędów w każdej aplikacji, którą próbujesz zmodyfikować. Może zadziałać, może nie. Nie można udzielić zawsze prawdziwej odpowiedzi.
Jeśli aplikacja została podpisana, możesz poszukać Contents/CodeResources
plik lub Contents/_CodeSignature/CodeResources
plik w pakiecie. Ten plik zawiera listę wszystkich podpisanych komponentów i ich oczekiwanych wartości mieszania w pakunku. Jest to dobre miejsce, aby zacząć rozumieć, jakie elementy aplikacji programista uważa za wystarczająco krytyczne, aby obserwować zmiany.