Frida의 주요기능 세가지
- injection
- interception
- 특정 함수를 후킹하여 매개변수나 반환값을 수정
- stalking
- 명령어 레벨의 코드를 추적하여 디버깅하고 메모리 내의 데이터를 검색하거나 추출.
Frida 명령어
frida-ps
- -a : 동작중인 애플리케이션 프로세스 목록
- -i : 동작중이거나 설치된 애플리케이션 프로세스 목록
Attach, Spawn
Attach
- -F, -n [package name] -p [PID] 를 사용
- 이미 실행된 프로세스에 frida를 연결
Spawn
- -f [package name]를 사용
- 프로세스를 실행시키는 동시에 frida를 연결
- 메인스레드 시작 전 일시정지 됨(--no-pause로 일시정지 해제 가능)
Load Script
- -l [script] 를 사용
$ echo "console.log(\"script loaded.\");" > script.js
$ frida -U -F -l script.js
frida-trace
- -I,-X는 모듈의 모든 함수를 추적, 제외
- -i,-x는 함수를 추적, 제외
- ex) -i "mem*" (mem으로 시작하는 모든함수)
- -a는 함수명이 부모모듈에 선언되어 -i로 특정할 수 없을때 찾고자하는 offset을 함께 전달하여 추적
- -d는 로그에 모듈 이름 기록(여러모듈의 같은이름 함수 존재시)
- -O 텍스트파일을 읽어 명령줄로 사용
frida-ls-devices
현재 Frida를 연결할 수 있는 기기목록 출력
- avd 실행중인데 왜 안나오는지 모르겠...
frida-kill
Frida setting
frida server 다운로드 후 adb로 push
- 단말기/avd의 프로세서와 맞는 버전을 찾아 설치
frida server 파일에 권한주고 실행
- 백그라운드에서 실행하게 하려면 뒤에 & 추가
로컬에서 frida-ps -U 명령어로 avd의 실행중인 어플 확인