프리다는 Ole가 개발한 DBI(Dynamic Binary Instrumentation)로, 실행중인 앱에 코드를 삽입하여 프로세스를 추적 및 분석, 디버깅을 할 수 있는 도구이다.
프리다를 설치하기 전에 녹스 앱플레이어와 아나콘다가 설치되어 있다고 가정하겠다.
아나콘다 설치 후 python 3.7 최신 버전으로 가상 환경을 구축한다. 구축 후 activate
명령어로 해당 가상 환경을 활성화 하여 가상 환경에 frida를 설치한다.
conda create -n py3 python=3.7
conda activate py3
pip install frida-tools
frida --version
프리다 버전을 확인하면 12.11.10
이라는 것을 알 수 있다. 프리다 서버를 설치하려면 설치된 프리다 버전을 알아두어야 한다.
ADB(Android Debug Bridge)
라는 프로그램을 통해 안드로이드 기기와 통신할 수 있다. 하지만 녹스 앱플레이어에서 제공하는 nox_adb
라는 프로그램을 대신 실행하여 녹스 앱플레이어에서 실행 중인 가상 안드로이드와 통신할 것이다. 실행 전에 환경 변수에 nox_adb
프로그램 경로를 추가한다.
아래 명령어로 녹스 앱플레이어에서 실행 중인 안드로이드와 연결되어 있는지 확인한다.
nox_adb devices
연결된 안드로이드 디바이스 목록이 출력되었고, 아래 명령어로 해당 디바이스 쉘로 접속할 것이다.
nox_adb shell
쉘에 접속 후, 아래 명령어를 통해 안드로이드가 몇 비트인지 확인한다.
getprop ro.product.cpu.abi
위 캡처화면처럼 x86
(32비트) 안드로이드라는 것을 알 수 있다.
https://github.com/frida/frida/releases
링크를 통해 frida-server-12.11.10-android-x86.xz
파일을 다운로드 받고 압축을 푼다. 압축을 풀고 나온 파일을 adb push
명령어로 녹스 안드로이드 앱에 업로드한다.
nox_adb push [프리다 서버 파일] [업로드 될 디렉토리]
해당 디렉토리에 프리다 서버가 업로드되었음을 확인했으니, 실행 권한을 부여하여 실행을 해보자. 실행할 때 끝에 &
문자를 붙이면 백그라운드로 실행하겠다는 의미이다.
실행 후 프리다와 통신하는지 확인하기 위해 새로운 cmd 창을 열어 이전에 생성했던 py3 가상 환경을 활성화 한 후, 아래 명령어를 실행한다. 해당 명령어는 안드로이드에서 실행 중인 프로세스 목록을 나열하는 것이다. 프로세스 목록이 나열되면 안드로이드에서 실행 중인 프리다 서버와 정상적으로 통신하고 있다는 의미이다.
frida-ps -U