코드만 필요하신 경우 가장 아래에 github 페이지에서 확인할 수 있습니다
Frida 17+ 환경에서 fridump3 호환 문제 해결
최근 Frida가 17.0.0 이상 버전으로 업그레이드되면서 기존에 사용하던 fridump3가 더 이상 정상 동작하지 않는 문제가 발생합니다.
그림처럼 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의 후킹 스크립트 내 함수 호출부를 모두 수정했다.
수정 범위:
- Memory 읽기 로직 수정 – 새로운 메서드 체이닝 방식 적용
- 모듈 주소/심볼 획득 방식 변경 –
Process.getModuleByName()
기반으로 변경 - 기타 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
'Security > └ 안드로이드 취약점 진단' 카테고리의 다른 글
[안드로이드 모의해킹] 메모리 내 중요정보 평문 노출 (1) | 2024.11.26 |
---|---|
[안드로이드 모의해킹] 코드 패치와 앱 무결성 검증 (NDK 코드 분석) (0) | 2024.11.17 |
[안드로이드 모의해킹] 코드 패치와 앱 무결성 검증 (smali 코드 분석) (4) | 2024.11.16 |
[안드로이드 모의해킹] 액티비티 강제 실행 (0) | 2024.11.11 |
[안드로이드 모의해킹] 백그라운드 화면 보호 (2) | 2024.11.09 |