Frida는 동적 분석을 위한 강력한 도구지만, 플랫폼에 따라 실행 방식이 조금 다릅니다. 특히 Android에서는 adb shell로 직접 frida-server를 실행해야 하지만, iOS(탈옥 환경)에서는 별도 실행 없이 바로 사용이 가능합니다.
1. Android : 직접 실행이 필요한 이유
Android는 리눅스 기반의 보안 모델을 따릅니다.
- 각 앱은 독립된 UID로 실행
- 기본적으로 앱 간 메모리 접근이 불가
- 시스템 수준 접근은 root 권한이 필요
- 때문에 다음과 같은 과정이 필요
adb shell # 디바이스에 접속
./frida-server # root 권한으로 실행
즉, Frida가 대상 프로세스를 후킹하려면 루트 권한으로 돌아가는 별도 백엔드 서버가 필요합니다.
2. iOS: frida-server 실행이 필요 없는 이유
iOS는 기본적으로 매우 폐쇄적인 OS이지만, 탈옥(jailbreak) 상태에서는 다음과 같이 동작합니다.
- 시스템 루트 권한 획득 (root)
- AMFI, Sandbox, Code Signing 우회
- 시스템 데몬과 launchd 접근 가능
# Cydia / Sileo 등에서 설치
apt install frida
탈옥 디바이스에서 frida 설치 시 frida-server가 launchd에 등록되어 자동 실행됩니다.
즉, 별도로 frida-server를 실행하지 않아도, PC에서 바로 attach가 가능합니다.
Android vs iOS
| 항목 | Android | iOS |
| 기본 권한 | 일반 사용자 | root |
| 앱 간 접근 | X 불가능 | O 가능 |
| frida-server 실행 | 수동 (adb shell로) | 자동 (설치 시 등록됨) |
| 루팅/탈옥 필요 | 필요 | 필요 |
| 설치 방식 | binary push | .deb 패키지 설치 |
3줄 요약
- Android는 보안이 강력한 구조여서 frida-server를 따로 실행해야 한다.
- iOS는 시스템에 루트 접근이 가능하고 launchd로 자동 실행되므로 별도 실행이 필요 없다.
- 운영체제의 보안 정책과 권한 모델 차이에서 비롯된다.