MobileGestalt
LibMobileGestalt.dylib обеспечивает централизованное хранилище для всех свойств Иос. Это может быть аналогично гештальту OS X, который является частью CoreServices
. Гештальт в OS X задокументирован, например, в Gestalt Manager, и в 10.8 он объявлен устаревшим. MobileGestalt полностью недокументирован Apple, поскольку это частная библиотека.
MobileGestalt позволяет тестировать свойства системы, которые могут быть совместимы или несовместимы на разных симуляторах.
Многие системные процессы и приложения в iOS полагаются на MobileGestalt, который находится по адресу /usr/lib/libMobileGestalt.dylib. Это скорее базовая библиотека, но ее открытые API соответствуют соглашениям Apple framework и используют, MG
например, префикс API MGIsDeviceOneOfType
.
Если вы поищете MobileGestalt в файловой системе iOS, вы не найдете его - как и все частные фреймворки и библиотеки, он был предварительно привязан к /System/Library/Caches/...etc. Если вам нравится взлом и проверка на проникновение, вы можете использовать инструменты для его извлечения.
MobileGestalt предоставляет много информации - около 200 запросов - по различным аспектам системы. Вот несколько.
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");
Есть еще сотни, например AirplaneMode
, MobileEquipmentIdentifier
и т. Д.
MobileGestalt поддерживает таблицу кодов селектора OSType. например c: 890 в сообщении: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType не поддерживается на этой платформе. В данном случае MGIsDeviceOneOfType
это метод библиотеки MobileGestalt .
Вместо проверки версии симулятора есть отдельный селектор для прямого запроса возможностей симулятора. Сообщения, скорее всего, указывают на несовместимость между версиями симулятора и версиями Xcode и / или неподдерживаемыми API на симуляторе.