Frida란?
앱이 실행되는 도중에 코드를 분석하거나 수정할 수 있는 동적 분석 도구
📦 설치
pip install frida-tools
🗂️ Frida 도구 종류
| 도구 | 역할 |
|---|---|
frida |
메인 도구 (스크립트 주입, REPL) |
frida-ps |
실행 중인 프로세스/앱 목록 확인 |
frida-trace |
함수 호출 추적 |
frida-ls-devices |
연결된 디바이스 목록 확인 |
frida-kill |
프로세스 강제 종료 |
🔌 공통 연결 옵션
모든 도구에서 공통으로 사용하는 옵션입니다.
| 옵션 | 의미 |
|---|---|
-U |
USB로 연결된 디바이스 사용 |
-R |
원격 frida-server에 접속 |
-H 192.168.x.x |
특정 IP의 frida-server에 접속 |
-D 디바이스ID |
특정 디바이스 ID로 접속 |
1️⃣ frida-ls-devices — 디바이스 확인
frida-ls-devices
가장 먼저 실행해서 디바이스가 잘 연결됐는지 확인.
2️⃣ frida-ps — 프로세스 목록
# USB 연결 디바이스의 전체 프로세스 목록
frida-ps -U
# 실행 중인 앱만 보기
frida-ps -Ua
# 설치된 모든 앱 보기 (앱 이름 + 패키지명 포함)
frida-ps -Uai
-Uai 옵션으로 패키지명(com.example.app)을 먼저 확인.
3️⃣ frida — 메인 도구 (스크립트 주입)
연결 방식
| 옵션 | 의미 | 예시 |
|---|---|---|
-n 이름 |
프로세스 이름으로 연결 | -n Twitter |
-N 패키지명 |
앱 패키지명으로 연결 | -N com.example.app |
-p PID |
PID 번호로 연결 | -p 1234 |
-f 패키지명 |
앱을 실행하면서 연결 (spawn) | -f com.example.app |
스크립트 옵션
| 옵션 | 의미 |
|---|---|
-l 파일명.js |
JS 스크립트 파일 로드 |
-e "JS코드" |
인라인으로 JS 코드 직접 실행 |
--no-pause |
spawn 시 앱 자동 시작 |
--runtime=v8 |
V8 엔진 사용 (에러 메시지 더 상세) |
--runtime=qjs |
QuickJS 엔진 사용 (기본값) |
사용 예시
# 실행 중인 앱에 스크립트 주입
frida -U -N com.example.app -l hook.js
# 앱을 실행하면서 스크립트 주입 (spawn 방식)
frida -U -f com.example.app -l hook.js --no-pause
# 간단한 코드 한 줄 실행
frida -U -N com.example.app -e "console.log('연결 성공!')"
# PID로 연결
frida -U -p 1234 -l hook.js
4️⃣ frida-trace — 함수 호출 추적
특정 함수가 언제 호출되는지 자동으로 추적.
주요 옵션
| 옵션 | 의미 | 예시 |
|---|---|---|
-i 함수명 |
네이티브 함수 추적 (* 와일드카드 가능) |
-i "recv*" |
-x 함수명 |
특정 함수 제외 | -x "recvfrom" |
-I 모듈명 |
모듈 전체 함수 포함 | -I libc.so |
-X 모듈명 |
모듈 전체 제외 | -X libc.so |
-j 클래스!메서드 |
Java 메서드 추적 (Android) | -j "*!*login*" |
-T |
프로그램의 모든 import 함수 추적 | |
-t 모듈명 |
특정 모듈의 import 함수 추적 | -t libssl.so |
사용 예시
# recv로 시작하는 모든 함수 추적
frida-trace -U -n Twitter -i "recv*"
# 로그인 관련 Java 메서드 추적 (Android)
frida-trace -U -N com.example.app -j "*!*login*"
# submit 관련 Java 메서드 추적
frida-trace -U -N com.example.app -j "*!*submit*"
# SSL 관련 함수 모두 추적
frida-trace -U -N com.example.app -i "*SSL*"
5️⃣ frida-kill — 프로세스 종료
# PID로 프로세스 종료
frida-kill -U 1234
# 특정 디바이스의 프로세스 종료
frida-kill -D 디바이스ID PID
추천 실행 순서
1단계: frida-ls-devices
→ 디바이스가 잘 연결됐는지 확인
2단계: frida-ps -Uai
→ 앱 패키지명(com.xxx.xxx) 확인
3단계: frida -U -N 패키지명 -l hook.js --no-pause
→ 스크립트 주입
4단계: frida-trace -U -N 패키지명 -j "*!*원하는함수*"
→ 함수 호출 추적
💡 자주 쓰는 명령어 모음
# 디바이스 확인
frida-ls-devices
# 설치된 앱 + 패키지명 목록
frida-ps -Uai
# 앱에 훅 스크립트 적용
frida -U -f com.example.app -l bypass.js --no-pause
# Java 메서드 추적
frida-trace -U -N com.example.app -j "*!*check*"
# 프로세스 종료
frida-kill -U 1234
주의사항
- frida-server 버전과 frida-tools 버전이 반드시 일치해야함
- Android는 루팅(rooting) 된 기기 또는 에뮬레이터가 필요함
- iOS는 탈옥(jailbreak) 된 기기가 필요함
-f(spawn) 방식 → 앱 시작부터 후킹 가능-n/-N방식 → 이미 실행 중인 앱에 연결
'🥕 공격 기술 (Red Team) > 모바일 해킹 (Mobile Hacking)' 카테고리의 다른 글
| ㄹㄹ (0) | 2026.03.03 |
|---|