2014-12-16 9 views
6

Aplikacja My OS X została uszkodzona przez modyfikację głównego pliku wykonywalnego. Został podpisany prawidłowym identyfikatorem programisty.OS X źle napisana aplikacja nadal uruchomiona bez ostrzeżeń

Oczekiwano pewnych ostrzeżeń podczas uruchamiania tej pękniętej wersji na domyślnej instalacji systemu OS X, ponieważ oznaczenie nie jest już ważne. Jestem zaskoczony, że nadal uruchamia się bez problemu z domyślną regułą GateKeeper "App Store lub tylko zweryfikowana wersja dewelopera"

Dlaczego system OS X wciąż uruchamia tę nieprawidłową aplikację bez ostrzeżenia typu "Ta aplikacja jest uszkodzona"? Czy muszę wprowadzić zmiany w moim codeign, aby użytkownicy mieli co najmniej zmienić regułę GateKeeper na "Everywhere" podczas uruchamiania tego crack?

$ spctl -a -t exec -vv CrackedApp.app/ 
CrackedApp.app/: invalid signature (code or signature have been modified) 

$ codesign --verify --deep --verbose=4 CrackedApp.app/ 
CrackedApp.app/: invalid signature (code or signature have been modified) 
In architecture: x86_64 
+0

Czy instalator jest zaangażowany? Zauważyłem, że OS X z przyjemnością przepuści uszkodzoną aplikację przez GateKeeper, jeśli aplikacja była pierwotnie zainstalowana za pomocą instalatora podpisanego przy pomocy kodu. To tak, jakby dbało tylko o sygnaturę kodu aplikacji, jeśli instalator NIE był używany. Wydaje się to dziwne, ale mogę rzeczywiście odtworzyć to zachowanie. Nie wiem, czy jest to związane z tym, co widzisz. – whiskeyspider

+0

Brak instalatora, aplikacja jest dostępna w pliku zip. Nie jest dostarczany za pośrednictwem App Store. – Tom

Odpowiedz

1

Pamiętaj, że GateKeeper zaczyna obowiązywać dopiero po uruchomieniu pliku z zestawu quarantine attribute. Pliki pobierane bezpośrednio przez Safari, Mail, Wiadomości i inne oprogramowanie Apple automatycznie ustawiają atrybut kwarantanny. Po kliknięciu przycisku "Czy na pewno chcesz go otworzyć?" alert, flaga kwarantanny zostaje wyczyszczona i GateKeeper nie jest już konsultowany. Jeśli chcesz sprawdzić równoważnik sprawdzania GateKeepera przy każdym uruchomieniu aplikacji, musisz zaimplementować własne sprawdzanie podpisu statycznego przy użyciu interfejsu API, takiego jak SecStaticCodeCheckValidity. Oczywiście, jeśli ludzie już modyfikują twój plik wykonywalny, mogą równie dobrze zmodyfikować go, aby obejść ten dodatkowy sprawdzanie podpisu kodu.

Powiązane problemy