W Mountain Lion wiem, że niektóre aplikacje, w tym wszystkie aplikacje w Mac App Store, są podpisane cyfrowo przez programistę, więc jeśli zostaną zmodyfikowane, podpis nie będzie się zgadzał i spowoduje to różnego rodzaju błędy (i sytuację będzie eskalować w następnej wersji systemu operacyjnego ...).
Moje pytanie brzmi: które części pakietu .app zawierają podpis? Jeśli byle co w Appname.app/Contents
zmiany (w tym metadane, takie jak data modyfikacji dla Contents
folder), czy to łamie podpis? Czy to tylko plik binarny w Contents/MacOS
? Czy wykonawcy są włączeni do podpisu? The Resources
? Co jako użytkownik końcowy mogę zhakować (jeśli w ogóle) bez łamania podpisu?
macos
code-signing
Daniel
źródło
źródło
Odpowiedzi:
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ć:
Również stąd niekoniecznie jest prawdą, że posiadanie nieprawidłowego podpisu dla aplikacji oznacza, że nie uda się jej uruchomić. Strona mówi:
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 lubContents/_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.źródło
Mimo że pytanie odnosi się konkretnie do Mountain Lion, istnieje ważna zmiana w nowszej wersji macOS. W systemie MacOS 10.11 i nowszych podpisy, które nie obejmują całego kodu, są odrzucane.
Widzieć Uwaga techniczna TN2206 - MacOS Code Signing In Depth .
źródło