mobile
), and only a few system applications and services run as root
(or other specific system users). Regular iOS apps are confined to a container that restricts access to the app's own files and a very limited number of system APIs. Access to all resources (such as files, network sockets, IPCs, and shared memory) are controlled by the sandbox. These restrictions work as follows [#levin]:mmap
and mmprotect
system calls are modified to prevent apps from making writable memory pages executable and stopping processes from executing dynamically generated code. In combination with code signing and FairPlay, this strictly limits what code can run under specific circumstances (e.g., all code in apps distributed via the App Store is approved by Apple)./Payload/
folder contains all the application data. We will come back to the contents of this folder in more detail./Payload/Application.app
contains the application data itself (ARM-compiled code) and associated static resources./iTunesArtwork
is a 512x512 pixel PNG image used as the application's icon./iTunesMetadata.plist
contains various bits of information, including the developer's name and ID, the bundle identifier, copyright information, genre, the name of the app, release date, purchase date, etc./WatchKitSupport/WK
is an example of an extension bundle. This specific bundle contains the extension delegate and the controllers for managing the interfaces and responding to user interactions on an Apple Watch.