MobileGestalt
libMobileGestalt.dylib는 아이폰 OS의 모든 속성에 대한 중앙 저장소를 제공합니다. OS X의 Gestalt와 유사 할 수 있습니다 CoreServices
. OS X의 Gestalt는 예를 들어 Gestalt Manager에 대해 문서화 되어 있으며 10.8부터 더 이상 사용되지 않습니다. MobileGestalt 는 개인 라이브러리이므로 Apple에서 완전히 문서화하지 않았습니다 .
MobileGestalt를 사용하면 다른 시뮬레이터에서 호환되거나 호환되지 않을 수있는 시스템 속성을 테스트 할 수 있습니다.
iOS의 상당수 시스템 프로세스와 앱은 /usr/lib/libMobileGestalt.dylib에있는 MobileGestalt에 의존합니다. 기본 라이브러리에 가깝지만 노출 된 API는 Apple 프레임 워크 규칙을 따르고 MG
API 접두사를 사용합니다 MGIsDeviceOneOfType
.
iOS 파일 시스템에서 MobileGestalt를 찾으면 찾을 수 없습니다. 모든 개인 프레임 워크 및 라이브러리와 마찬가지로 /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를 나타낼 가능성이 높습니다.