MobileGestalt
Die libMobileGestalt.dylib bietet ein zentrales Repository für alle Eigenschaften von iOS. Es kann analog zu der Gestalt von OS X sein, die Teil von ist CoreServices
. Die Gestalt von OS X ist beispielsweise im Gestalt-Manager dokumentiert und ab 10.8 veraltet. MobileGestalt ist von Apple völlig undokumentiert, da es sich um eine private Bibliothek handelt.
MobileGestalt ermöglicht das Testen von Systemeigenschaften, die auf verschiedenen Simulatoren kompatibel sein können oder nicht.
Nicht wenige Systemprozesse und Apps in iOS basieren auf MobileGestalt, das sich unter /usr/lib/libMobileGestalt.dylib befindet. Es ist eher eine Basisbibliothek, aber die verfügbaren APIs folgen den Apple Framework-Konventionen und verwenden beispielsweise das MG
API-Präfix MGIsDeviceOneOfType
.
Wenn Sie im iOS-Dateisystem nach MobileGestalt suchen, werden Sie es nicht finden - wie alle privaten Frameworks und Bibliotheken wurde es in /System/Library/Caches/...etc vorverknüpft. Wenn Sie gerne hacken und Pen-Tests durchführen, können Sie Tools verwenden, um diese zu extrahieren.
MobileGestalt bietet zahlreiche Informationen zu verschiedenen Aspekten des Systems - etwa 200 Abfragen. Hier sind ein paar.
libMobileGestalt.dylib
//Answers to MG queries
MGCopyAnswer(@"5MSZn7w3nnJp22VbpqaxLQ");
MGCopyAnswer(@"7mV26K/1a+wTtqiunvHMUQ");
MGCopyAnswer(@"BasebandAPTimeSync");
MGCopyAnswer(@"BasebandPostponementStatus");
MGCopyAnswer(@"BasebandPostponementStatusBlob");
MGCopyAnswer(@"BasebandSecurityInfoBlob");
MGCopyAnswer(@"BasebandStatus");
MGCopyAnswer(@"BuildVersion");
MGCopyAnswer(@"CoreRoutineCapability");
MGCopyAnswer(@"DeviceClass");
MGCopyAnswer(@"DeviceClassNumber");
MGCopyAnswer(@"DeviceName");
MGCopyAnswer(@"DeviceSupports1080p");
MGCopyAnswer(@"DeviceSupports720p");
MGCopyAnswer(@"DiskUsage");
MGCopyAnswer(@"GSDeviceName");
MGCopyAnswer(@"HWModelStr");
MGCopyAnswer(@"HasBaseband");
MGCopyAnswer(@"InternalBuild");
MGCopyAnswer(@"InverseDeviceID");
MGCopyAnswer(@"IsSimulator");
MGCopyAnswer(@"MLBSerialNumber");
MGCopyAnswer(@"MaxH264PlaybackLevel");
MGCopyAnswer(@"MinimumSupportediTunesVersion");
MGCopyAnswer(@"PasswordConfigured");
MGCopyAnswer(@"PasswordProtected");
MGCopyAnswer(@"ProductType");
MGCopyAnswer(@"ProductVersion");
MGCopyAnswer(@"RegionCode");
MGCopyAnswer(@"RegionalBehaviorNTSC");
MGCopyAnswer(@"RegionalBehaviorNoPasscodeLocationTiles");
MGCopyAnswer(@"ReleaseType");
MGCopyAnswer(@"SIMStatus");
Es gibt Hunderte mehr zB AirplaneMode
, MobileEquipmentIdentifier
usw.
MobileGestalt verwaltet eine Tabelle mit OSType-Auswahlcodes. Beispiel : c: 890 in der Nachricht: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType wird auf dieser Plattform nicht unterstützt. In diesem Fall MGIsDeviceOneOfType
handelt es sich um eine Methode der MobileGestalt-Bibliothek .
Anstatt die Simulatorversion zu überprüfen, gibt es einen separaten Selektor, mit dem die Funktionen des Simulators direkt abgefragt werden können. Die Meldungen weisen höchstwahrscheinlich auf Inkompatibilitäten zwischen Simulatorversionen und Xcode-Versionen und / oder nicht unterstützten APIs auf dem Simulator hin.