Frida 17.0.0은 2025년 5월 17일에 발표된 메이저 릴리스로, 3년 만에 이루어진 주요 업데이트입니다. 이번 릴리스에서는 여러 레거시 API의 제거와 함께 메모리 접근 방식의 개선, 모듈 관련 API의 구조 변경 등 다양한 변경 사항이 포함되어 있습니다.
🔧 주요 변경 사항 요약
1. 레거시 API 제거
다음과 같은 레거시 API들이 제거되었습니다:
- Module.ensureInitialized()
- Module.findBaseAddress()
- Module.getBaseAddress()
- Module.findExportByName()
- Module.getExportByName()
- Module.findSymbolByName()
- Module.getSymbolByName()
이러한 변경으로 인해 모듈 탐색 및 심볼 조회 방식이 변경되었습니다. 예를 들어:
Process.getModuleByName('libc.so').getExportByName('open');
또한, Module.getSymbolByName(null, 'open')은 이제 Module.getGlobalExportByName('open')으로 대체됩니다.
2. 메모리 접근 방식 개선
메모리 읽기/쓰기 API가 객체 지향 방식으로 개선되었습니다.
이제 각 쓰기 메서드는 NativePointer 자체를 반환하여 메서드 체이닝이 가능합니다:
3. 정적 모듈 API 제거
정적 모듈 API인 Module.enumerateExports() 등도 제거되었습니다. 이러한 변경은 TypeScript 바인딩 사용자에게는 큰 영향이 없을 것으로 예상됩니다.
🛠️ 마이그레이션 가이드
기존 코드를 새로운 API에 맞게 수정하려면 다음과 같은 변경이 필요합니다:
- Module.getExportByName('libc.so', 'open') → Process.getModuleByName('libc.so').getExportByName('open')
- Module.getBaseAddress('libc.so') → Process.getModuleByName('libc.so').base
- Module.getSymbolByName(null, 'open') → Module.getGlobalExportByName('open')