[Fridump3] Frida 17 이상 버전에서 Not a function 에러 해결

코드만 필요하신 경우 가장 아래에 github 페이지에서 확인할 수 있습니다

 

Frida 17+ 환경에서 fridump3 호환 문제 해결

최근 Frida가 17.0.0 이상 버전으로 업그레이드되면서 기존에 사용하던 fridump3가 더 이상 정상 동작하지 않는 문제가 발생합니다.

not a function 에러

그림처럼 fridump에서 발생하는 에러는 아니지만 not a function 에러는 동일하게 발생한다.


 

문제 원인

기존 fridump3는 Frida 16.x 이하 버전의 API를 기반으로 작성되어 있어, Frida 17+에서 제거되거나 변경된 메서드를 그대로 사용하고 있다.
검색을 통해 확인한 결과, 대부분의 해결 방법은 Frida 버전을 낮추어 사용하는 우회 방식뿐이었고, 최신 버전에서 바로 사용할 수 있는 패치는 제시되지 않고 있었다.

원인을 분석한 결과, Process에 attach한 뒤 Memory를 읽는 방식에서 API 변경이 주된 문제임을 확인했다.


 

주요 API 변경 사항 (Frida 17+)

Frida 17.0.0 릴리스에서 다음과 같은 주요 변경이 있었다.
(참고: Frida 17 Release Note)

Legacy API (Deprecated) New API (Frida 17+)
Module.getExportByName() Process.getModuleByName(...).getExportByName(...)
Module.getBaseAddress() Process.getModuleByName(...).base
Memory.readU8/U32/Utf8String() on ptr() ptr(...).readU8() (method chaining)

수정 방법

Frida 공식 문서(JavaScript API Docs)를 참조하여, fridump3의 후킹 스크립트 내 함수 호출부를 모두 수정했다.

수정 범위:

  1. Memory 읽기 로직 수정 – 새로운 메서드 체이닝 방식 적용
  2. 모듈 주소/심볼 획득 방식 변경Process.getModuleByName() 기반으로 변경
  3. 기타 Deprecated API 호출 제거 및 최신 방식으로 대체

 

수정 후 실행 예시

python3 fridump.py -u -r [PID] -s

 


옵션 설명:

`-u` : USB 연결 디바이스에 attach

`-r` : 프로세스(PID)

`-s` : 문자열 출력

 

결과


 - 기존 fridump3 명령어와 옵션을 그대로 사용 가능

 - Frida 17.0.0 이상 환경에서 정상 작동 확인(기존 로직은 삭제하였으므로 17 미만 버전은 정상동작하지 않음)

원본 fridump3의 기능(메모리 덤프, 섹션 파싱 등)은 그대로 유지

 

소스코드

원본 fridump3: https://github.com/rootbsd/fridump3

Frida 17+ 호환 버전: https://github.com/PeanutKingPeanut/fridump3

 

GitHub - PeanutKingPeanut/fridump3: A universal memory dumper using Frida 17+ compatibility for Python 3

A universal memory dumper using Frida 17+ compatibility for Python 3 - PeanutKingPeanut/fridump3

github.com

 

반응형