macOS Bundles
Last updated
Last updated
Dowiedz się i praktykuj Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i praktykuj Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Pakiety w macOS służą jako kontenery dla różnorodnych zasobów, w tym aplikacji, bibliotek i innych niezbędnych plików, sprawiając, że wyglądają jak pojedyncze obiekty w Finderze, takie jak znane pliki *.app
. Najczęściej spotykanym pakietem jest pakiet .app
, choć inne typy, takie jak .framework
, .systemextension
i .kext
, również są powszechne.
Wewnątrz pakietu, szczególnie w katalogu <aplikacja>.app/Contents/
, znajduje się wiele ważnych zasobów:
_CodeSignature: Ten katalog przechowuje szczegóły podpisu kodu niezbędne do weryfikacji integralności aplikacji. Możesz sprawdzić informacje o podpisie kodu za pomocą poleceń takich jak: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
MacOS: Zawiera wykonywalny plik binarny aplikacji, który uruchamia się po interakcji użytkownika.
Resources: Repozytorium komponentów interfejsu użytkownika aplikacji, w tym obrazy, dokumenty i opisy interfejsu (pliki nib/xib).
Info.plist: Działa jako główny plik konfiguracyjny aplikacji, kluczowy dla systemu w celu rozpoznania i interakcji z aplikacją w odpowiedni sposób.
Plik Info.plist
jest fundamentem konfiguracji aplikacji, zawierając klucze takie jak:
CFBundleExecutable: Określa nazwę głównego pliku wykonywalnego znajdującego się w katalogu Contents/MacOS
.
CFBundleIdentifier: Zapewnia globalny identyfikator aplikacji, szeroko używany przez macOS do zarządzania aplikacjami.
LSMinimumSystemVersion: Wskazuje minimalną wersję macOS wymaganą do uruchomienia aplikacji.
Aby zbadać zawartość pakietu, takiego jak Safari.app
, można użyć następującego polecenia: bash ls -lR /Applications/Safari.app/Contents
Ta eksploracja ujawnia katalogi takie jak _CodeSignature
, MacOS
, Resources
, oraz pliki takie jak Info.plist
, z każdym pełniącym unikalną rolę od zabezpieczania aplikacji po definiowanie interfejsu użytkownika i parametrów operacyjnych.
Poza powszechnymi katalogami, pakiety mogą również zawierać:
Frameworks: Zawiera spakowane frameworki używane przez aplikację. Frameworki są podobne do dylibs z dodatkowymi zasobami.
PlugIns: Katalog dla wtyczek i rozszerzeń, które zwiększają możliwości aplikacji.
XPCServices: Przechowuje usługi XPC używane przez aplikację do komunikacji międzyprocesowej.
Ta struktura zapewnia, że wszystkie niezbędne komponenty są zamknięte w pakiecie, ułatwiając modularne i bezpieczne środowisko aplikacji.
Aby uzyskać bardziej szczegółowe informacje na temat kluczy Info.plist
i ich znaczenia, dokumentacja deweloperska Apple oferuje obszerne zasoby: Apple Info.plist Key Reference.
Dowiedz się i praktykuj Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i praktykuj Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)