
Discover reverse engineering concepts for iOS, using a pizza analogy to show analysis without source code and solving problems by adding or modifying iOS parts via a general methodology.
Design a stage-by-stage course that builds your ability to reverse engineer using a thinking pattern and tools, then apply a step-by-step iOS reverse engineering solution tested on two harder examples.
Tackle the homework to practice iOS reverse engineering and finish all tasks by yourself, getting your hands dirty to learn effectively.
Explore four iOS reverse engineering examples, detailing tasks from SpringBoard launch alerts and Uber prompt dismissal to reproducing Yahoo Weather HTTP JSON protocol and fixing a QQ crash.
Students complete the homework by solving four tasks in the provided apps, articulate their train of thought, and predict potential problems to refine a consistent reverse engineering thinking pattern.
Explore how to show an alert when SpringBoard launches by hooking native delegate methods with CydiaSubstrate and Theos, using tools like ps, ssh, iFunBox, and class-dump.
Analyze the target functions, specifically applicationDidFinishLaunching: or applicationDidFinishLaunchingWithOptions, SSH into iOS, locate the SpringBoard binary, class-dump headers, hook the method, and trigger an alert when SpringBoard finishes launching.
Review the thinking pattern and study tool usage from the book and forum, then build a self-contained Theos project and share 'control', 'Makefile', and 'Tweak.xm' on the forum.
Master iOS reverse engineering by tracing view controllers and call chains, using Cycript, Hopper, IDA, and LLDB to analyze and bypass the force upgrade flow in Uber.
Master tracing the call chain to reveal why UBForceUpgradeViewController is presented, starting from the initialization and the property setter to showForceUpgradeViewControllerWithURLString, and decide whether to skip its presentation using Theos.
Engage in an iOS reverse engineering homework task using Hopper and LLDB to locate and remove an app alert, sharing your method and results.
Review thinking patterns from lectures 3 and 4 and outline a general reverse engineering methodology. Follow steps: guess the target, locate the binary, identify the function, and modify the logic.
Observe and guess cut points from experience; decrypt the binary with dumpdecrypted; extract headers with class-dump; locate target view via recursiveDescription; recover the call chain with Hopper and LLDB.
Set two random goals and verify the methodology, then share your process on the forum; learn how this approach links thinking with tools for iOS reverse engineering.
Discover how to reverse engineer Yahoo Weather's network protocol by using Charles to capture packets, identify oauth_signature generation via oauth_timestamp and oauth_nonce, and apply hmac sha1 and Base64EncodeData.
Investigate Yahoo Weather traffic by sniffing with Charles, locating oauth_signature, and decrypting binaries. Use lldb and Hopper to reveal the signature algorithm and implement your own solution.
Redo this homework without slides, integrating all learned knowledge to emulate how a reverser thinks, and take time to make it your own before the next lecture.
Apply iOS reverse engineering to fix a crash in QQi by tracing issue from tableView:didSelectRowAtIndexPath: to an NSDate category, where a 32-bit to 64-bit time_t mismatch causes localtime to fail.
Combing our thoughts, debug an iOS crash after selecting a chat cell, locating the bug in viewDidDisappear due to a space size mismatch. Use LLDB and the ARM documentation to fix.
Redo this task for lecture 7 without slides, discuss questions on the forum, and apply iOS reverse engineering concepts to reverse simple functions with a reverser mindset.
The purpose of this course is to provide iOS developers with a practical way to “think different”, and open another door so they can see the whole picture.This course offers a free conprehensive book and serves as a digest and guide of it.
The course consists of 4 parts, i.e. concepts, tools, theories and practices. The course follows an "abstraction, concrete, abstraction, concrete" structure, starting from basic concepts like iOS filesystem hierarchy and iOS file types that Apple didn't expose to App developers but iOS researchers should know, then goes through the most commonly used tools like class-dump, Theos, Cycript, Reveal, IDA and LLDB to introduce what to do in iOS reverse engineering. After that, iOS reverse engineering theories based on Objective-C and ARM assembly are explained in a methodological way, pointing out the core of the book. Last but not least, several originally elaborated practices are there to cover all previous contents of the course and give you the most intuitive perception of iOS reverse engineering.