콘텐츠로 건너뛰기
Frida 활용 안드로이드 모의해킹 🤖
#4 프로세스, 트레이스, 디바이스 제어

frida-trace

Frida를 사용하여 애플리케이션의 함수 호출을 동적으로 추적하고 출력하는 도구

1. Nox 애뮬레이터로 Chrome 실행

2. 실행 프로세스 확인

$ frida-ps -Ua

3. 프로세스 추적

-i 옵션 : 추적할 함수의 이름을 지정하는 데 사용. 지정한 함수가 호출될 때마다 해당 호출 정보를 출력.

-U 옵션 : USB를 통해 연결된 디바이스와 상호 작용할 때 사용. Frida가 USB를 통해 연결된 디바이스에 대한 프로세스 추적.

$ frida-trace -i "open" -U com.android.chrome

– open.js 파일 생성 및 “Open” 함수 추적 시도 확인

4. open.js 분석

– onEnter 함수를 활용해 “open”이라는 로그를 계속 출력시켜주는 것을 확인할 수 있다.

  1. onEnter 함수:
    • onEnter는 Frida 스크립트에서 사용되는 콜백 함수 중 하나입니다. 이 함수는 추적 중인 함수에 진입할 때 호출되는데, 여기에서는 open 함수에 진입할 때 실행되는 코드를 정의합니다.
  2. log 함수:
    • log는 Frida 스크립트에서 제공되는 함수로, 콘솔에 메시지를 출력하는 데 사용됩니다. 이 예시에서는 'open()'라는 문자열을 출력하여 open 함수에 진입했음을 알립니다.
  3. args 매개변수:
    • args는 현재 함수에 전달된 인수들을 나타내는 배열입니다. open 함수에 어떤 인수가 전달되었는지에 대한 정보를 이용하여 더 세부적인 분석이 가능합니다.
  4. state 매개변수:
    • state는 스크립트의 상태를 나타내는 객체입니다. 이를 통해 콜백 함수 간에 정보를 공유하거나 상태를 관리할 수 있습니다.
    • state는 스크립트의 상태를 나타내는 객체입니다. 이를 통해 콜백 함수 간에 정보를 공유하거나 상태를 관리할 수 있습니다.

5. 추가 분석을 위한 args 출력 방법

js 파일 수정

log('open(' +  'pathname=' + args[0] + ', flags=' + args[1] + ')');

  1. pathname (파일 경로):
    • pathname은 열고자 하는 파일의 경로를 나타내는 문자열입니다. 파일 시스템에서 해당 파일을 찾기 위해 사용됩니다.
    • 예시: /path/to/file.txt
  2. flags (파일 열기 옵션):
    • flags는 파일을 어떤 방식으로 열지에 대한 옵션을 지정합니다. 여러 가지 옵션을 비트 플래그로 조합하여 사용할 수 있습니다.
    • 주요 플래그:
      • O_RDONLY: 읽기 전용으로 열기
      • O_WRONLY: 쓰기 전용으로 열기
      • O_RDWR: 읽기 및 쓰기로 열기
      • O_CREAT: 파일이 없을 경우 생성
      • O_APPEND: 파일의 끝에 데이터를 추가
    • 예시: O_RDONLY | O_CREAT

수정 후 메모리 경로, flags 값이 출력되는 것을 확인할 수 있다.

+ API 활용 메모리 객체 확인을 위한 utf-8 형태 변환

log('open(' + 'pathname=' + Memory.readUtf8String(args[0]) + ', flags=' + args[1] + ')');

Frida Trace 를 활용한 프로세스 추적 방법을 확인하였다.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
모든 댓글보기