Today, we continue the series we started yesterday about iOS Reverse Engineering & Development for Beginners.
In today's video I explain you about iOS structure, the file system hierarchy (on iOS 10), about the Kernel and the SandBox (and why we need to race it on Jailbreak), we discuss about iOS Access Permissions of different type of components and about APIs.
If you haven't seen the first video, we recommend you to watch it first.
We're going to also understand the difference between Daemons, Frameworks, Dylibs, Static Libs, Plist Files, System Apps, Kexts and APIs provided by these.
Daemons are components inherited from UNIX family to which iOS belongs. These software components are background services that ensure Instant Messaging, Log grabbing, Media, Startup Apps launch, and system-wide monitoring.
For example, launchd is the most important daemon on iOS. It is responsible for starting all the daemons at startup, and all the apps (like SpringBoard). Jailbreakers usually patch this daemon to load Cydia's MobileSubstrate and other similar components.
mediad Daemon is responsible for media playback device-wide, while imagentd Daemon is responsible for Messages, Calls and Push Notifications. The first Call recording application made use of Private APIs found in imagentd Daemon that Apple left undocumented.
Actually, Apple only documented a few of the APIs. Cydia apps usually use private APIs that a regular Store App doesn't have access to. That makes Cydia apps that powerful.
We're going to get deeper into the SandBOX and Kernel related reverse engineering in the next videos.
Check out other related videos we have: https://goo.gl/SXmvhq
iOS File Hierarchy: https://goo.gl/3F702v