
iOS 플랫폼에서 클래스, 함수를 쉽게 추적하고 메서드의 반환 값을 수정할 수 있는 도구
📍 Frida를 쉽게 사용할 수 있도록 도와주는 도구입니다. iOS 플랫폼에서 클래스, 함수를 추적하고 메서드의 반환 값을 수정하는 스크립트를 지원합니다.
👉 Android 플랫폼용: frida-android-hook
👉 iOS 애플리케이션에서 암호화된 API 가로채기: frida-ios-intercept-api
| OS | 지원 여부 | 비고 |
|---|---|---|
| MacOS | ✅ | 안정적 |
| Linux | ✅ | 안정적 |
| Windows | ✅ | 불안정 |
| iOS | Frida | Frida-tools | 지원 여부 | 안정 버전 |
|---|---|---|---|---|
| 16.7.11 | 16.7.14 | 13.7.1 | ✅ | |
| 16.7.11 | 16.1.4 | 12.2.1 | ✅ | ✅ |
참고: frida 17.0.1에 존재하는 ObjC not defined 문제를 해결하려면 안정 버전을 사용하세요.
Python 3.x로 실행됩니다. 프로세스에 spawn 및 attach 스크립트를 모두 지원합니다. ./ioshook -h의 모든 옵션:
[+] Latest version
https://github.com/noobpk/frida-ios-hook/releases
[+] Develop version
git clone -b dev https://github.com/noobpk/frida-ios-hook
[+] Python >= v3.0 (Recommend to use pyenv or virtualenv)
1. cd frida-ios-hook/
2. python3 -m venv py-env
3. source py-env/bin/active
1. pip3 install -r requirements.txt
3. python3 setup.py
4. cd frida-ios-hook
5. ./ioshook -h (--help)
스크립트를 실행했는데 작동하지 않으면 다음을 시도해 보세요:
frida -U -f package -l script.js
저는 개발자가 아니기 때문에 코딩 실력이 최고가 아닐 수 있습니다. 따라서 이 도구에 문제가 있거나 작동하지 않는 경우 이슈를 생성해 주시면 수정하도록 노력하겠습니다. 새로운 기능 제안 및 토론은 언제나 환영합니다!
| 카테고리 | 옵션 | 설명 |
|---|
| 일반 | -h, --help | 도움말 메시지를 표시하고 종료합니다 |
--cli | iOSHook 대화형 CLI를 실행합니다 | |
-p, --package PACKAGE | 대상 앱의 번들 식별자 (spawn) | |
-n, --name NAME | 대상 앱의 표시 이름 (attach) | |
--pid PID | 대상 앱의 프로세스 ID (attach) | |
-s, --script SCRIPT.JS | Frida JavaScript 후킹 스크립트 경로 | |
-c, --check-version | iOSHook 업데이트 확인 | |
-u, --update | iOSHook을 최신 버전으로 업데이트 | |
| 빠른 메서드 | -m, --method METHOD | app-static, bypass-jb, bypass-ssl, i-url-req, i-crypto (필요에 따라 -n 또는 -p 사용) |
| 정보 | --list-devices | 연결된 모든 Frida 장치 나열 |
--list-apps | 장치에 설치된 모든 애플리케이션 나열 | |
--list-scripts | 사용 가능한 모든 Frida 스크립트 나열 | |
--logcat | 장치의 시스템 로그 표시 (idevicesyslog) | |
--conf | hook.conf 파일 열기 및 편집 | |
--shell, --ssh | 장치에 SSH 셸 열기 (기본값: iproxy를 통한 USB) | |
--ssh-port-forward LOCAL:DEVICE | 로컬에서 장치로 포트 포워딩 (ssh -R) | |
--network HOST:PORT | 네트워크 SSH를 통해 연결 (기본 포트 22) | |
--local | iproxy를 사용하여 USB를 통해 연결 | |
| Dump decrypt IPA | -d, --dump-app | 애플리케이션 IPA 파일 덤프 및 복호화 |
-o, --output OUTPUT_IPA | 복호화된 IPA의 출력 파일명 (.ipa 제외) | |
--dump-output-dir DIR | 덤프된 IPA의 출력 디렉터리 (기본값: workspaces/dumps) | |
| Dump memory | --dump-memory OPTS | 실행 중인 애플리케이션의 메모리 덤프 (예: --string, --read-only) |
| HexByte Scan IPA | --hexbyte-scan MODE | 모드: help, scan, patch, json |
--file FILE.IPA | 스캔/패치할 IPA 파일 | |
--pattern PATTERN | 검색할 16진수 패턴 (예: E103??AA????E0) | |
--address ADDRESS | 패치할 주소 (형식: 주소,바이트,거리) | |
--task TASK.json | hexbyte 스캔을 위한 JSON 작업 파일 | |
| reFlutter | --reflutter FLUTTER.IPA | reFlutter 분석을 위한 Flutter IPA 경로 |
| 제목 | 링크 |
|---|
| Frida iOS Hook | 기본 사용법 | 설치 - 장치 목록 - 앱 목록 - 스크립트 목록 - Logcat - 셸 | https://youtu.be/xSndHgTdv4w |
| Frida iOS Hook | 기본 사용법 | Decrypt IPA 덤프 - 앱 메모리 덤프 - Hexbyte-Scan IPA | https://youtu.be/AUsJ9_gnWAI |
| Frida iOS Hook | 기본 사용법 | App Static - 탈옥 우회 - SSL 우회 - URL + 암호화 가로채기 | https://youtu.be/nWhKDSzArf8 |
| Frida iOS Hook | 고급 사용법 | 메모리 덤프 - Radare2 - Iaito | https://youtu.be/nUqE4EYWiEc |