본문 바로가기

연구문서/모바일 분석

프리다(Frida) 후킹 프레임워크 16.0.3 신규 릴리즈 배포 소식!

반응형

앱 모의해킹과 애플리케이션 취약점 분석에서 활용할 수 있는 프리다(Frida) 후킹 프레임워크 도구가 신규 릴리즈 배포 소식이 있습니다. 모의해킹 업무로 진로를 선택했다면 필수 아이템!!

https://frida.re/news/2022/11/23/frida-16-0-3-released/

 

[본문 중 번역]

tvOS 및 워치OS

이번에 흥미로운 기여 중 하나는 @tmm1 에서 나왔습니다 . 그는 tvOS에 대한 지원을 추가하는 많은 풀 요청을 열었습니다. 예이! 이것들을 소개하는 과정에서 저는 watchOS에 대한 지원도 추가할 기회를 가졌습니다.

이것은 또한 Autotools와 같은 비 Meson 빌드 시스템을 지원하기 위해 도입된 복잡성을 제거하여 빌드 시스템을 단순화할 수 있는 좋은 시간이었습니다. 따라서 이 정리 작업의 일부로 이제 iOS 시뮬레이터, tvOS 시뮬레이터 등과 같은 시뮬레이터 대상에 대한 별도의 바이너리가 있습니다. 이전에는 x86_64 iOS 시뮬레이터만 지원했지만 이제 arm64도 지원됩니다.

맥OS 13 및 iOS 16

이번 주 초에 @hsorbo 와 저는 Apple의 최신 OS에서 동적 링커 변경 사항을 다루는 재미있고 생산적인 쌍 프로그래밍을 수행했습니다. i/macOS에서 Frida를 사용하는 사용자는 spawn()이 macOS 13 및 iOS 16에서 작동을 멈춘 것을 눈치챘을 것입니다.

이것은 재미있는 일이었습니다. 파일 시스템의 dyld 바이너리는 이제 dyld_shared_cache 에서 자신과 동일한 UUID를 가진 dyld를 찾고, 발견되면 벡터 실행을 대신 수행합니다. 이것이 Frida의 spawn() 기능을 망가뜨린 이유를 설명하려면 약간의 컨텍스트가 필요하므로 참으십시오.

attach()를 호출할 때 Frida가 수행하는 작업 중 일부는 에이전트를 아직 주입하지 않은 경우 에이전트를 주입하는 것입니다. 그러나 주입을 수행하기 전에 프로세스가 충분히 초기화되었는지, 즉 libSystem이 초기화되었는지 확인합니다.

대상이 dyld의 진입점에서 일시 중단되는 spawn() 이후와 같이 그렇지 않은 경우 Frida는 기본적으로 libSystem이 준비되는 지점에 도달할 때까지 기본 스레드의 실행을 진행합니다. 이는 일반적으로 하드웨어 중단점을 사용하여 수행됩니다.

따라서 새 dyld가 이제 dyld_shared_cache 내부의 다른 복사본에 연결되기 때문에 Frida는 캐시에 있는 버전 대신 파일 시스템에서 매핑된 버전에 중단점을 배치했습니다. 분명히 적중되지 않았으므로 이것이 발생하기를 기다리는 동안 시간 초과가 발생합니다.

하지만 수정 사항 은 합리적으로 간단했기 때문에 마지막 순간에 이 수정 사항을 릴리스에 집어넣을 수 있었습니다.

컴파일러 개선

frida.Compiler는 훨씬 더 좋아졌고 이제 tsconfig.json을 통한 추가 구성과 로컬 frida-gum 타이핑 사용을 지원합니다.

V8 디버거

V8 디버거 통합은 V8 스냅샷 지원에 필요한 섬세한 리팩토링인 스크립트당 하나의 V8 Isolate를 갖도록 이동하여 중단되었습니다. 이제 정상 작동 상태로 돌아왔습니다.

종속성 업그레이드

이번에 더 무거운 리프트 중 하나는 분명히 의존성 업그레이드였는데, 여기에서 대부분의 의존성이 이제 업그레이드되었습니다. ARMv9.2를 지원하는 Capstone에서 PCRE2를 사용하는 최신 GLib 등으로 업그레이드되었습니다.

PCRE2로의 이동은 GLib가 이전에 PCRE1을 사용했기 때문에 Memory.scan() 정규식 지원이 업그레이드되었음을 의미합니다. 우리는 아직 어떤 플랫폼에서도 PCRE2의 JIT를 활성화하지는 않지만 앞으로 개선할 수 있는 쉬운 일이 될 것입니다.

크로스 포스트: frida-tools 12.0.2

또한 @tmm1 덕분에 새롭고 흥미로운 기능을 갖춘 frida-tools의 새로운 릴리스도 있습니다. frida-ls-devices 도구 는 이제 네 번째 열에 표시되는 OS 이름 및 버전과 함께 더 높은 충실도의 장치 이름을 표시합니다.

업그레이드하려면:

$ pip3 install -U frida frida-tools

 

 

반응형