프리다 CLI인 REPL(Read Evaluate Print Loop) 인터페이스로, 타겟 앱에 접근할 수 있게 한다. 녹스 앱플레이어에서 크롬을 실행 후 -U
옵션과 함께 크롬 패키지 명을 입력하여 명령어를 실행하면 크롬 프로세스에 접근여 디버깅 할 수 있다.
위 캡처 화면 상태에서 탭을 누르면 실행할 수 있는 명령어가 나온다.
안드로이드에서 실행 중인 프로세스 목록을 출력한다. -U
옵션을 통해 프로세스 목록을 호출 할 수 있고, -a
옵션을 더 붙이면 실행 중인 앱 목록만을 출력한다.
프리다에 연결된 디바이스를 출력한다.
프리다가 프로세스의 특정 호출을 동적으로 추적한다. -i
옵션을 통해 크롬 앱에서 open
API 함수가 호출 될 때마다 로그를 출력하도록 한다.
핸들러라고 하는 게 open.js
라는 파일로 생성되었다고 출력되었다. 해당 파일을 열어보았다.
open
함수가 호출 될 때마다 로그를 출력하도록 되어 있음을 알 수 있다. 함수가 호출 될 때 인자로 전달되는 값을 확인해보자.
리눅스 open
함수에서 첫번째로 전달되는 인자 값은 pathname
임을 알 수 있고, 이를 frida API 함수인 Memory.readUtf8String
를 호출하여 메모리 주소값을 실제 경로명으로 변경하여 출력해보자. 참고로 frida API 함수에 관련된 내용은
https://frida.re/docs/javascript-api/
이 링크에서 확인할 수 있다.
크롬 앱에서 open
함수가 호출 될 때마다 어떤 경로에서 호출하는 지 로그가 출력되는 것을 알 수 있다.
특정 프로세스를 종료한다. 크롬 앱의 PID를 확인하여 이를 종료시켜보자.