Skip to content

Commit 7496e02

Browse files
authored
Update and rename 2025-09-30-iOS-All-The-Things-Part-III.md to 2025-10-01-iOS-All-The-Things-Part-III.md
1 parent c7fd2d0 commit 7496e02

File tree

2 files changed

+78
-33
lines changed

2 files changed

+78
-33
lines changed

_posts/2025-09-30-iOS-All-The-Things-Part-III.md

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
date: 2025-10-01 23:04:15
3+
layout: post
4+
title: iOS All The Things - Part III
5+
6+
description:
7+
image: /assets/img/ios-pentesting/Part-III/cover-test-III.jpeg
8+
optimized_image: /assets/img/ios-pentesting/Part-III/cover-test-III.jpeg
9+
category: blog
10+
tags:
11+
- iOS Pentesting
12+
- IOS Penetration Testing
13+
- frida
14+
- objection
15+
- iOS Reverse Engineering
16+
- Caches
17+
- logs
18+
- iOS Basics
19+
---
20+
21+
# Agenda of iOS Pentesting:
22+
1. [Intro](#intro)
23+
2. [Runtime Manipulation](#runtime-manipulation)
24+
3. [iOS Reverse Engineering](#ios-reverse-engineering)
25+
4. [Network Communication](#network-communication)
26+
5. [Cache & Logs](#cache--logs)
27+
6. [Conclusion](conclusion)
28+
29+
## Intro
30+
31+
Now, in Part 3, we put that knowledge to the test. This is where we transition from passive observation to active engagement, performing a real-world penetration test against an iOS application.
32+
33+
Our journey will take us deep inside the application's runtime behavior, where we'll learn to manipulate it in real-time with powerful tools like Frida and Objection. We will then reverse engineer its binary to uncover hidden logic and vulnerabilities. We'll intercept and dissect its network communications, and finally, we'll scour its cached data and logs for exposed sensitive information.
34+
35+
## Runtime Manipulation: Mastering Frida & Objection
36+
37+
In iOS penetration testing, Runtime Manipulation is one of the most powerful techniques at your disposal. It allows you to interact with and modify a running application without needing its original source code. This is where Frida and Objection become essential tools in your arsenal.
38+
39+
This requires a physical USB connection between your jailbroken iOS device and your Linux machine, which serves as the vital link for tools like Frida to control the target application.
40+
41+
**Basic Workflow:**
42+
43+
a. Start the target app on your jailbroken device.
44+
45+
b. Inject Frida scripts to hook into interesting functions.
46+
47+
c. OR Use Objection for quick security assessment and bypasses.
48+
49+
d. Monitor and manipulate the app's behavior in real-time
50+
51+
#### Frida
52+
53+
It is a dynamic instrumentation toolkit. In simple terms, it lets you inject your own scripts into running applications. Think of it as giving you a "remote control" for any app. you can:
54+
55+
* Change what the app does while it's running.
56+
* Bypass security checks (like pinning or root detection).
57+
* Monitor function calls and method arguments.
58+
* Modify return values of functions.
59+
60+
Once you have a Frida script running inside an application, you can interact with the Objective-C runtime, which is the backbone of most iOS apps. This is incredibly powerful for discovering and manipulating the app's classes and methods on the fly.
61+
62+
```bash
63+
// -U: Connect to a USB device
64+
// -f: Spawn the app with this package name
65+
// -n: Attach to the process with this name
66+
67+
frida -U -f com.highaltitudehacks.DVIAswiftv2 -n 'DVIA-v2'
68+
```
69+
70+
**Here are fundamental commands:**
71+
72+
![image](/assets/img/ios-pentesting/Part-III/objc-frida.png)
73+
74+
* `ObjC.available`: This is a crucial check you should perform at the beginning of your scripts. It returns true if the Objective-C runtime is accessible within the target process, and false if it is not. This confirms you are in the right context before trying to execute any other Objective-C commands.
75+
76+
* `ObjC.classes`: This command provides a goldmine of information. It returns a list of all Objective-C classes currently loaded in the application's memory. This is your starting point for understanding the app's structure and finding interesting targets to hook and manipulate.
77+
78+
*

0 commit comments

Comments
 (0)