1. FRIDA 기초 문법
– ObjC.available
• 현재 프로세스에 Objective-C 런타임이 로드되었는지 여부를 지정하는 Boolean(True, False)
: swift 앱 또한 동일
– ObjC.classes
• 현재 등록된 클래스에 대한 ObjC.object 자바스크립트 바인딩에 대한 오브젝트 맵핑 클래스 이름
– Interceptor.attach(target, callbacks[, data])
• target(앱)에서 함수에 대한 호출을 가로챔 (호출을 가로채고자 하는 함수의 주소를 지정하는 NativePointer)
: 후킹이 이 부분에 해당!
• callbacks 인수는 하나 이상을 포함하는 오브젝트(객체)
- onEnter: function(args)
: NativePointer 객체의 배열로 인수를 읽거나 쓰는 데 사용할 수 있는 하나의 인수 args가
제공된 callback 함수 (args[0 = self], [1 = select], [2 = 후킹 함수의 매개변수])
- onLeave: function(retval) - return 값을 변조 시 사용
: 원래 return 값을 포함하는 NativePointer에서 파생 객체인 인수 retval이 제공된 callback 함수
: retval.replace(1337)를 호출하여 return 값을 정수 1337로 바꾸거나,
: retval.replace(ptr(0x1234))를 포인터로 변경 가능
– Module.findBaseAddress(name)
– Module.getBaseAddress(name)
• name 모듈의 base 주소를 반환
• 모듈을 찾을 수 없는 경우,
- find-prefixed 함수는 null을 반환하고
- get-prefixed 함수는 예외를 발생함
– NativePointer (new NativePointer(s))
• 메모리 주소를 "10진수" 또는 "접두사가 0x인 16진수"로 포함하는 문자열 s에서 새로운 NativePointer를
생성
• 간결하게 ptr(s)로 사용 가능
# 객체 속성
– $methods
• 주어진 객체의 클래스와 부모 클래스에 의해 노출된 기본 메소드 이름을 포함하는 배열
– $ownMethods
• 부모 클래스를 포함하지 않고, 주어진 객체의 클래스에 의해 노출된 기본 메소드 이름을 포함하는 배열
– context
• ia32/x64/arm에 대해 각각 EIP/RIP/PC 및 ESP/RSP/SP를 지정하는 NativePointer 객체인 pc 및 sp 키가 있는 객체
• 다른 프로세스별 키(예, eax, rax, r0, x0 등)도 사용 가능
• 이 키에 할당하여 레지스터 값을 업데이트 가능
# 이 외 종류가 훨씬 많고 FRIDA 공홈에서 확인 가능!
https://frida.re/docs/javascript-api/#objc
'APP 진단 > iOS' 카테고리의 다른 글
10. Jailbreak Detection 3 - 탈옥 탐지 우회 실습 2 (0) | 2022.11.17 |
---|---|
9. Jailbreak Detection 3 - 탈옥 탐지 우회 실습 1 (2) | 2022.11.16 |
7. Jailbreak Detection 1 - 환경설정 (기드라/프리다) (0) | 2022.11.15 |
6. DVIA 앱 진단 (1) - Local Data Storage (0) | 2022.11.06 |
5. 취약한 애플리케이션 환경 구성 (DVIA-v2) (0) | 2022.11.05 |