Frida 기본 명령어

minmoong07·2023년 6월 10일
1

Frida 시리즈

목록 보기
2/4

명령어 직접 사용해보기 👋

저번 글에서는 frida 환경을 구축하기 위한 작업들을 했습니다.
이번 글에서는 frida를 사용하기 위해 꼭 필요한 명령어들을 알아봅시다.

아래 명령어들은 저번 글에서 설치했던 frida-tools 안에 들어있는 명령어들입니다.

frida-server 실행하기

우선 명령어들을 실행시키기 위해 저번 시간에 녹스 앱플레이어에 설치한 frida-server를 실행시키도록 하겠습니다.

파일 실행을 위해서 파일에 실행 권한을 줘보도록 하겠습니다.
아래 명령어를 통해 frida-server 파일에 실행 권한을 주겠습니다.

> nox_adb shell "chmod 777 /data/local/tmp/frida-server"

실행 권한을 부여했다면 이제 아래 명령어를 통해 실행시킬 수 있습니다.

> nox_adb shell "/data/local/tmp/frida-server &"

nox_adb shell "<명령어>" 를 통해 녹스 shell 에 접속하지 않아도 cmd에서 바로 명령어를 실행할 수 있습니다.

/data/local/tmp/frida-server는 실행 파일의 경로인데, 이것을 명령어로 입력하면 그 실행 파일이 실행됩니다. 뒤에 & 는 실행 파일을 백그라운드로 실행시키겠다는 의미입니다. cmd창을 꺼도 실행 파일이 종료되지 않습니다.

이제 명령어들을 살펴봅시다.

frida-ps

frida-ps 명령어를 사용하면 현재 실행중인 프로세스들의 정보를 볼 수 있습니다. -U 옵션을 사용하면 usb 장치에서 실행중인 프로세스들을 볼 수 있습니다.

C:\Users\dev>frida-ps -U
 PID  Name
----  ------------------------------------------
2887  Facebook
4891  Google Play 스토어
4490  갤러리
4034  인터넷
4620  카카오톡

frida-trace

frida-trace 명령어는 프로그램에서 실행되는 특정 함수를 실시간으로 추적할 수 있습니다.

아래 명령어는 usb type으로 연결된 장치 안에(-U 옵션) 인터넷 앱에서 open 함수가 실행될 때 마다(-i 옵션을 통해 open 함수를 추적 대상에 추가함) 이벤트를 실행합니다.

frida-trace -U 인터넷 -i "open"
C:\Users\dev>frida-trace -U 인터넷 -i "open"
Instrumenting...
open: Auto-generated handler at "C:\\Users\\dev\\__handlers__\\libc.so\\open.js"
Started tracing 1 function. Press Ctrl+C to stop.
         /* TID 0x1b81 */
1075 ms  open()
1076 ms  open()
1076 ms  open()
...

open 함수가 녹스 앱플레이어의 인터넷 앱에서 실행될 때 마다 로그가 출력되는 것을 볼 수 있습니다.

또한 C:\\Users\\dev\\__handlers__\\libc.so\\open.js 경로에 이벤트 핸들러가 자동으로 생성되었다고 하니 직접 파일을 열어보겠습니다.

여기서 이벤트 핸들러란 인터넷 앱에서 open 함수가 실행되었을 때, 즉, 이벤트가 발생했을 때 어떤 작업을 수행할 것인가를 정의하는 함수입니다.

// open.js
{
  onEnter(log, args, state) {
    log('open()');
  },

  onLeave(log, retval, state) {
  }
}

open.js 파일의 내용은 위와 같습니다.(주석들은 지웠습니다.)

코드를 해석해보면 인터넷 앱에서 open 함수를 호출할 때 onEnter 함수를 실행하여 'open()' 을 화면에 출력하는 작업을 진행하는 것을 볼 수 있습니다. 이와 마찬가지로 앱에서 open 함수를 종료하려고 할 때 onLeave 함수를 실행합니다.

onEnter 함수와 onLeave 함수에 추가적인 코드를 작성하여 더 자세하게 특정 함수를 분석할 수 있습니다. 😃


지금까지 frida 사용을 위한 기본적인 명령어들을 알아보았습니다.

다음 시간부터는 본격적으로 FridaLab 문제들을 풀어보면서 실제로 앱 분석이 어떻게 이뤄지는지, 후킹 코드는 어떻게 작성해야 하는지 알아보도록 하겠습니다!

0개의 댓글