Team Members
Purva Ajit Huilgol
Shruthi Sambasivan
Shivani Nayar
Xidong Wang
Shawn Pike
Overview
Introduction to iOS
History
Architecture
Platform
Introduction to Objective-C
Development environment and Application lifecycle.
HelloWorld! App
TableViews
SQLite and Code Data
Webservices
Location services and Gestures
Jailbreak
Introduction to iOS
The Beginnings
Apple's Steve Jobs introduced the iPhone to the
world on January 10th, 2007
iOS actually began life with a different name: OS X
When the original iPhone launched, the OS was
called "iPhone OS" and it kept that name for 4
years.
Its use is extened to iPod Touch, iPad and Apple
TV.
iOS 1: The iPhone is born
Windows Mobile, Palm OS, Symbian, and even BlackBerry
were all established systems in 2007, with a wide and deep
array of features.
Comparatively, the iPhone didn't support
3G
multitasking
3rd party apps,
MMS
Exchange push email and tethering,
it hid the file-system from users
editing Office documents
voice dialing, and it was
almost entirely locked down to hackers and developers.
iOS 1: The iPhone is born
Few of the many innovations were revolutionary for
the mobile industry.
The core iOS user interface.
Mobile Safari web browser
Google Maps
Visual voicemail
The software keyboard
iOS 1: The iPhone is
born
Some specific iOS updates
Version
Year
Devices
Features
iOS 1.1
Released
09 /2007
iPhone 2G,
iPod Touch 1st
Gen
• iTunes Wi-Fi Music
Store,
• iPod Touch
compatibility
iOS 2.0
Released
07 / 2008
iPhone 3G & 2G,
iPod Touch 1st
Gen
• Native 3rd-party apps,
• App Store
• Microsoft Exchange
support
• MobileMe
• Contact Search
iOS 2.0
Version
Year
Devices
Features
iOS 2.1
Released
09 / 2008
iPhone 3G and 2G
iPod Touch 2nd
Gen & 1st Gen
Battery life and speed
fixes
iTunes Genius playlists
Dropped call fixes
iOS 2.2
Released
11 / 2008
iPhone 3G and 2G
iPod Touch 2nd
Gen and 1st Gen
Google street view
Podcast downloads
iOS 3.0
Version
Year
Devices
Features
• Cut, copy, paste
• Voice Control
• MMS
• Spotlight search
• Push notifications
• USB & Bluetooth tethering
• Landscape keyboard
• Find my iPhone
iOS 3.0
Released
06 / 2009
iPhone 3GS, 3G & 2G
iPod Touch 2nd Gen
&
1st Gen
iOS 3.1
Released
09 / 2009
iPhone 3GS, 3G & 2G • Genius features
iPod Touch 3rd Gen, • Ringtone downloads
2nd Gen and 1st Gen* • Remote lock
• Voice Control over
Bluetooth
iOS 3.2 : The iPad arrives
New UI paradigms for a larger screen
left-hand sidebar list
no "back" button required for most apps
pop-over list
New app designs.
dedicated row for bookmarks in Safari
Photos app
Skeumorphism
The Notepad app
iOS 4.0 : Multitasking
Version
iOS 4.0
Year
Released
06 / 2010
Devices
iPhone 4,
iPhone 3GS,
iPhone 3G*,
iPod Touch 3rd Gen,
iPod Touch 2nd Gen
Features
• Multitasking
• Home screen folders
• FaceTime video chat
• Unified email inbox
• Threaded email
messages
• Retina Display
support
• iAd support
Version
iOS 4.0 Updates
Year
Devices
Features
iOS 4.1
Released
09 / 2010
iPhone 4, 3GS & 3G
iPod Touch 4th Gen,
3rd Gen & 2nd Gen
Game Center
TV rentals
iTunes Ping
HDR photos
iOS 4.2.1
Released
11 / 2010
iPhone 4, 3GS and 3G
iPad
iPod Touch 4th Gen,
3rd Gen and 2nd Gen
iPad multitasking
iPad folders
AirPlay
AirPrint
iOS 4.2.5
Released
02 / 2011
Verizon iPhone 4
Verizon support
Personal hotspot (CDMA)
iOS 4.3
Released
03 / 2011
iPhone 4 (GSM),3GS,
iPad 1 & 2
iPod Touch 4th Gen &
3rd Gen
Personal Hotspot (GSM)
AirPlay for 3rd-party
apps
iTunes Home Sharing
iOS 5.0: Siri & Much
More…
Siri
Notification Center
iMessage
No PC required
iTunes Wi-Fi Sync
Over-the-air updates
iCloud
iOS 6 : Goodbye to Google
Maps
Maps
Siri enhancements
Notification Center.
Facebook integration
Passbook
Shared Photo Streams
iCloud Tabs and Reading List enhancements
FaceTime over cellular and better Apple ID integration
iOS : Software Architecture
The Cocoa Touch Layer
Primarily written in Objective-C
Is based on the standard Mac OS X Cocoa API
Provides the following frameworks for iPhone app
development:
UI Kit Framework
Map Kit Framework
Push Notification Service
Message UI Framework
Address UI Framework
Game Kit UI Framework
iAd Framework
Event Kit UI Framework
UI Kit Framework
User interface creation and
management
Application lifecycle
management
Application event handling
Multitasking
Wireless Printing
Data protection via encryption
Web and text content
presentation and management
Connection to external
displays
Blue tooth
Cut, copy, and paste
functionality
Data handling
Inter-application
integration
Local notifications
Accessibility
Accelerometer, battery,
proximity sensor, camera.
Touch screen gesture
recognition
File sharing
Map Kit Framework
Provides a programming interface that enables you
to build map based capabilities into your own
applications.
Display
scrollable maps for any location
map corresponding to the current geographical
location of the device and
annotate the map in a variety of ways.
Other Frameworks
Push Notification Service : Allows applications to notify
users of an event.
Message UI Framework : Allows users to compose and
send emails from within the application.
Other Frameworks
Game Kit Framework : Provides peer-to-peer
connectivity and voice communication
Address Book UI Framework : Enable user to access
contact information from the iPhone address book
from the application.
Other Frameworks
iAd Framework: Allows developers to include
banner advertising within their applications.
Event Kit UI Framework: Allows the calendar
events to be accessed and edited from within an
application.
Hardware Details of iPhone5
Processor: 1.3 GHz Dual Core Apple-designed ARMv7s
Apple A6 and
PowerVR SGX543MP3 (3-Core) GPU
Memory: 1GB DRAM
The A6 is said to use a 1.3 GHz custom Apple-designed
ARMv7 based dual-core CPU, called Swift.
Objective-C
Objective-C is an object-oriented programming
language used by Apple primarily for programming
Mac OS X and iOS applications.
It is a super set of C.
Objective-C source code files are contained in two
types of files:
.h— header files
.m— implementation files
Classes
The @interface Section
@interface NewClassName: ParentClassName
{
memberDeclarations;
}
methodDeclarations;
@end
Instance variables
Class and instance methods
The @implementation Section
@implementation NewClassName
methodDefinitions;
@end
The @class Section
@class Classname;
Used as forward declaration to reference another
class defined in another file.
Example
#import <Foundation/Foundation.h>
@interface Fraction: NSObject
{
int numerator;
int denominator;
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
@end
@implementation Fraction
-(void) print
{
NSLog (@”%i/%i”, numerator, denominator);
}
-(void) setNumerator: (int) n
{
numerator = n;
}
-(void) setDenominator: (int) d
{
denominator = d;
}
@end
int main (int argc, char *argv[])
{
@autoreleasepool{
Fraction *myFraction; // Create an instance of a
Fraction
myFraction = [Fraction alloc];
myFraction = [myFraction init];
[myFraction setNumerator: 1];
[myFraction setDenominator: 3];
NSLog (@”The value of myFraction is:”);
[myFraction print];
}
return 0;
}
Synthesized Accessor Methods
@interface Fraction : NSObject
{
int numerator;
int denominator;
}
@property int numerator, denominator;
Properties are often your instance variables. The Objective-C
compiler automatically generates or synthesize the getter and
setter methods using @synthesize directive as shown below.
#import “Fraction.h”
@implementation Fraction
@synthesize numerator, denominator;
Protocols
A protocol declares methods that can be implemented by
any class.
@interface Myclass:NSObject
<UIApplicationDelegate, AnotherProtocol>
{……..}
@end;
Categories
A category in Objective-C enables you to add methods to
an existing class without the need to subclass it. You can
also use a category to override the implementation of an
existing class.
Data Types
Environment
To write an iPhone
application, you have
to install Xcode and
the iPhone SDK.
https://developer.app
le.com/xcode/
First iPhone Application
Application Lifecycle
Responding to Interrupts
Moving from Foreground to Background
Moving from Background to Foreground
Publishing app to the App Store
Data Management SQLite
Sqlite (http://www.sqlite.org/index.html) is an open source embedded
database. The original implementation was designed by D.
Richard Hipp.
In 2000 version 1.0 of SQLite was released. This initial release
was based off of GDBM (GNU Database Manager).
Version 3.0 added many useful improvements.
Open source RDBMS.
Single File database
Works as library not database.
Major users of SQLite: Adobe (PS and RE), Apple(mail and
Safari), Google (Desktop and Gears) etc..
Thus, widely used in testing, analysis and embedded devices.
Configuration Steps…
Add the Framework for
SQLite i.e.
libsqlite3.0.dylib
In xcode v4+, select
project then in project
settings editor select
summary. Scroll down
to frameworks and
select add (+).
In the .h file #import
“sqlite3.h”
Open connection with
path and file. You can
use any file format such
as .db, .sql and .sqlite
SQLite Disadvantages
Problem with foreign key
Single user
No procedures
No security
Problem with 64bit system….
Table Views
A table view is an instance of the UITableView class in one of two basic
styles, plain or grouped.
Table views have many purposes:
To let users navigate through hierarchically structured data
To present an indexed list of items
To display detail information and controls in visually distinct groupings
To present a selectable list of options
Single View vs Table
view bases Architecture
main
App Delegate
main
App Delegate
View Controller
Main Window
View Controller
Screen view
View
Controller1
View
Controller3
View
Controller2
Main Window
View Controller1
Screen view
View Controller3
Screen view
View Controller2
Screen view
Steps
Start a new project.
Open Storyboard.
Add three table view controllers (TvC1, TvC2, TvC3)
Add Navigation Controller: select TvC1, Editor -> Embed in ->
Navigation Controller.
To connect, select TvC1 drag
TvC1 cell to TvC2 toolbar and
select push
segue….
select each table view Cell to give a Identifier in table view cell
properties.
Select the segue and give the identifier name to each.
Create three obj-c classes extended from UITableViewController. Link
these classes to the views on storyboard.
Add barbuttonItem to each view toolbar and link them to IBAction
buttons in respective viewControllers.
Segue
Link the two views using Segue..
Update methods:
numberOfSectionsInTableView
NumberOfRowsInSection
cellForRowAt
Core Data
A framework that supports creation of model objects that
encapsulate your application data and logic in the Model-ViewController design pattern.
Built-in management of undo and
redo beyond basic text editing.
Automatic validation of property
values.
Maintaining the consistency of
relationships among objects
Grouping, filtering, and organizing
data in memory and in the user
interface
Automatic support for storing objects in external data repositories
https://developer.apple.com/library/mac/#referencelibrary/GettingStarted/GettingStartedWithCoreData/
Steps
Create an empty
Application
* make sure “Use
Core Data” is
checked.
Manage object context: gateway into storing data objects.
These data objects belong to the view content.
Propagates all the changes to the file system
Persistent storage cordinator: adaptor between files on the
device and the application.
Sqlite is used as the database.
A simple Core Data stack
http://developer.apple.com/library/ios/#documentation/DataManageme
nt/Conceptual/iPhoneCoreData01/Introduction/Introduction.html#//app
le_ref/doc/uid/TP40008305-CH1-SW1
Core data Model
Create classes of each Entity
Update view controller methods to ascess model
classes.
Create category (on the top of the existing files) for
additional functionally such as sorting, filter rows etc...
Location Service
Location Data
Location:
Coordinates (major property),
Accuracy,
Timestamps, etc.
Placemark:
An array of strings.
Conversion from Coordinates
to Place Name Information
Conversion from Place Name
Information to Coordinates
Gesture
System Type
Tapping
Pinching in and out
Panning or dragging
Swiping
Rotating
Long press
Custom Type
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognize
_basics.html
Mechanism of gesture
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecog
_basics.html
Discrete Gesture
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecog
_basics.html
Continuous Gesture
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecog
_basics.html
Add a built-in gesture
recognizer to your app
Create and configure a gesture recognizer instance.
This step includes assigning a target, action, and
sometimes assigning gesture-specific attributes.
Attach the gesture recognizer to a view.
Implement the action method that handles the
gesture.
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecog
_basics.html
Jailbreak
History
Major Players
Reasons To Jailbreak it
Techniques
Kernel Debugging
The Current Jailbreak
Links
History
Major Players
Reasons To Break it
Terms
KDP
XNU
RWX
ROP
Stack Buffer Overflows
Heap Buffer Overflows
HFS
Techniques
Kernel Debugging
Kernel Debugging
- Tools
- Stack Buffer Overflow
- Heap Buffer Overflow
The Current JB
References
[1] Objective-c reference,
http://developer.apple.com/library/mac/#referencelibrary/GettingStarted/Learning_Objectiv
e-C_A_Primer/_index.html#//apple_ref/doc/uid/TP40007594
Programming in Objective-C 2.0 by Stephen G. Kochan
Xcode user guide link,
http://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/Xco
de4UserGuide/000-About_Xcode/about.html#//apple_ref/doc/uid/TP40010215
Developing iOS app,
https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/Introduct
ion.html
iOS development center, developer.apple.com
https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/
AboutTableViewsiPhone/AboutTableViewsiPhone.html#//apple_ref/doc/uid/TP40007451-CH1-SW1
http://media.blackhat.com/bh-us11/Esser/BH_US_11_Esser_Exploiting_The_iOS_Kernel_Slides.pdf
http://antid0te.com/CSW2012_StefanEsser_iOS5_An_Exploitation_Nightmare_FINAL.pdf
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/Event
HandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.htm
Apple Document “Location Awareness Programming Guide”
Book “Beginning.iOS5.Development” by Dave Mark, Jack Nutting, Jeff LaMarche
Harvard Extension School:
http://cs76.tv/2012/spring/#l=lectures&r=about&v=lectures/9/lecture9
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/cd
ProgrammingGuide.html#//apple_ref/doc/uid/TP30001200-SW1
© Copyright 2025