Skip to main content

Reverse Engineering iOS

Reverse-Engineering iOS Apps: Hacking on Lyft

Conrad covers many concepts & tools that can used to reverse-engineer existing apps, as well as debug other libraries and even your own code. He even demonstrates the art of reverse engineering on Lyft’s iOS app, injecting code into it and inspecting its network traffic. Using Conrad’s techniques, you can expose the code behind any app on the App Store.

Reverse-Engineering Lyft (1:44)
Peeking into Lyft (2:48)
Inspecting Network Traffic - Charles Demo (4:08)
Injecting Code into Apps - Cycript Demo (7:44)
Decrypting Executables - dumpdecrypted Demo (11:28)
Analyzing the Executable - IDA Demo (13:47)
Finding Lyft’s URL Scheme (18:23)

Comments

Most Favorite Posts

Working natively with JavaScript in iOS and Android without WebView

Using JavaScript code from native code without using a WebView (sic!) can be really useful to introduce dynamic functionality that was updatable without need of updating the app shorter iteration cycles share code between backend and native iOS and Android apps You can have business logic provided by a JavaScript that then controls the app that inject native functionality in the JavaScript context. You could even write an A/B testing framework based on this approach. iOS iOS offers the native JavaScriptCore: Evaluate JavaScript programs from within an app, and support JavaScript scripting of your app. So you can evaluate a script and read its return value natively: context.evaluateScript(myLib); let result = context.evaluateScript("myFunction();") let myFunction = context.objectForKeyedSubscription("myFunction"); let parametrizedResult = myFunction.invokeMethod(...) Or you can inject a native object into the JavaScript engine: @objc protoco...

How to access specific settings in the iOS settings app

Apple Settings App Open the preference / settings app. You can open the app at different pages Native application URL string example: prefs:root=General&path=Bluetooth Extended example: Tags: settings preferences Airplane mode: prefs:root=AIRPLANE_MODE Bluetooth: prefs:root=General&path=Bluetooth Brightness: prefs:root=Brightness Location services: prefs:root=LOCATION_SERVICES Location services (System services): prefs:root=LOCATION_SERVICES_Systemservices Hotspots: prefs:root=Hotspot WLAN: prefs:root=WIFI UMTS-Settings: prefs:root=General&path=Network Mobile data: prefs:root=General&path=USAGE/CELLULAR_USAGE VPN: prefs:root=General&path=Network/VPN Sound: prefs:root=Sounds Rigntone: prefs:root=Sounds&path=Ringtone Siri speech settings: prefs:root=General&path=Assistant handleopenurl.com

Crash Reporter

Plausible CrashReporter provides an in-process crash reporting framework for use on both the iPhone and Mac OS X. Crash reports are output as protobuf-encoded messages, and may be decoded using the CrashReporter library or any Google Protobuf decoder. The CrashReporter library handles both uncaught exceptions and fatal signals. Features: Implemented as a in-process fully async-safe signal handler. Does not interfere with debugging in gdb Handles both uncaught Objective-C exceptions and fatal signals (SIGSEGV, SIGBUS, etc) Backtraces for all active threads are provided. Provides full register state for the crashed thread. The following platforms are currently supported: Mac OS X 10.5+ (x86-32, ppc, experimental x86-64) iPhone OS 2.0+: (armv6, armv7) iPhone Simulator 2.0+ (x86-32) PLCrashReporter Server part and extension: CrashReporterDemo MacDevCrashReporter See also: CrashKit Hoptoad Hexspeak

Validity Time Auto-Renewables in Sandbox

The subscription durations, sandbox durations and incentive durations of auto-renewables. Hint: In Sandbox the validity time differs from live environment!!! Durations Sandbox Duration Incentive Durations (optional) 7 days 3 minutes 7 days 1 month 5 minutes 7 days, 1 month 2 months 10 minutes 7 days, 1 month 3 months 15 minutes 1 month 6 months 30 minutes 1 month, 2 months 1 year 1 hour 1 month, 2 months, 3 months After 6 extensions the abo is cancelled automatically in the sandbox environment.

Great Teams Are About Personalities, Not Just Skills

The scientific evidence indicates quite clearly that individuals’ personalities play a significant role in determining team performance. In particular, personality affects: What role you have within the team How you interact with the rest of the team Whether your values (core beliefs) align with the team’s In our own work we found that psychological team roles are largely a product of people’s personalities. For example, consider team members who are: Results-oriented. Team members who naturally organize work and take charge tend to be socially self-confident, competitive, and energetic. Relationship-focused. Team members who naturally focus on relationships, are attuned to others' feelings, and are good at building cohesion tend to be warm, diplomatic, and approachable. Process and rule followers. Team members who pay attention to details, processes, and rules tend to be reliable, organized, and conscientious. Innovative and disruptive thinkers. Team members who n...

App Icons on iPad and iPhone

Below are guidelines for handling icon files for iPhone-only apps, iPad-only apps, and universal apps. Name Size (pixels) Platform Icon.png 57 x 57 Universial application icon Icon-settings.png 29 x 29 Universial application icon for settings area. Alternative name: Icon-Small.png Icon~ipad.png 72 x 72 iPad application icon. Alternative name: Icon-72.png Add some smaller (iPad doc: 64×64, other optional 32×32, 24×24, 16×16) custom icons to your project. See comments. Icon-spot~ipad.png 50 x 50 iPad icon for spotlight search. Alternative name: Icon-Small-50.png iPhone OS trims 1 pixel from each side and adds a drop shadow. The actual size is 48×48 pixels. iTunesArtwork.png 512 x 512 Universial application icon for iTunes App Store. Uploaded separately to iTunes. It’s included in the app bundle too, file name: iTunesArtwork . In an iPad application iPhone OS uses this image to generate the large (320×320) document icon if it is not supplied otherwise. ...

Google Play Publishing API

The Google Play Developer Publishing API allows you to automate frequent tasks having to do with app production and distribution. This provides functions similar to those available to a developer through the Developer Console, such as: Uploading new versions of an app Releasing apps, by assigning APKs to various Tracks (alpha, beta, staged rollout, or production) Creating and modifying Google Play Store listings, including localized text and graphics and multi-device screenshots Those tasks are performed using the new edits functionality, which take a transactional approach to making changes; you bundle several changes into a single draft edit, then commit the changes all at once. (None of the changes take effect until the edit is committed.) Developers Google