효투의 세상 로딩중...
효투의 세상 로딩중...
반응형

솔루션이 적용된 앱들을 우회하려면 IDA를 통한 분석보다 Frida Trace를 이용한 분석을 더 많이 사용할 수 있다.

이전에 포스팅한

2022.05.04 - [모바일/Ios] - [ios] ios 클래스 및 메소드 추적 Frida-Trace

 

[ios] ios 클래스 및 메소드 추적 Frida-Trace

안드로이드 Frida Trace와 같이 ios에서도 스크립트를 이용하여 비슷한 기능이 있다. 2022.04.14 - [모바일/Android] - [Android] 안드로이드 apk 메소드 추적 프리다 트레이스 (Frida Trace) [Android] 안드로이..

hyotwo.tistory.com

raptor 스크립트를 활용한 클래스 추적이 아닌

Frida 자체에서 지원하는 Trace 기능도 있다.

raptor 스크립트로 추적을 했을 때 앱의 어떤 클래스와 충돌해 다 끌어오지 못하고 시작하자마자

꺼지는 경우가 생길 수도 있으며,

또 각각 트레이스의 방법마다 결과가 다르게 나오는 경우도 많아서 다른 방법도 알아두면 좋다.

 

일단 Frida자체 Trace 모듈은 정말로 어떤 클래스의 메소드가 실행되는지 딱 그것만 알아내기때문에

충돌할 일이 거의 없다.

 

다양한 옵션들은 아래 사이트에서 확인이 가능하다

https://frida.re/docs/frida-trace/

 

frida-trace

Inject JavaScript to explore native apps on Windows, macOS, GNU/Linux, iOS, Android, and QNX

frida.re

 

하지만 쓰는 것은 -m, -M 두가지면 충분할 듯 하고 나머지 정규식 사용법만 필요하다.

추가로 필요할 때 들어가서 참고해도 무방함 

-m 옵션은 검색 키워드를 포함해서 추적함 (Jail로 키워드를 잡고 실행하면 Jail 문자열이 포함된 클래스 출력)

-M 옵션은 검색 키워드를 제외해서 추적함 ( Jail 키워드를 잡고 실행하면 그 문자열이 포함된 클래스는 출력안함)

 

실행 명령어는 간단하다

frida-trace -U -f 패키지명 -m "-또는+[클래스 메소드명]"

 

위 사진처럼 명령어를 실행하면 찾은 클래스와 메소드를 출력해주고

트레이스를 걸어둔 상태로 해당 클래스의 메소드 기능이 실행되게되면

아래 사진처럼 실행된 시간정보와 실행되었다고 출력해준다

 

근데 이렇게 클래스와 메소드 메소드의 종류가 다 알고있는 상태에서 트레이스는 의미가없다

그래서 * 로 정규식을 사용할 수 있다

frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]"

 

정규식을 사용하게되면 위 사진처럼 Jail이 포함된 + 메소드든 -메소드든 다 출력해주는데

위에서 사용된 정규식의 의미는 첫번째 * 부터 1번이라고하고 4번 * 까지 존재한다고 했을 때

"*[*Jail* *]"

1번 *은 + 메소드인지 - 메소드 인지 구분하지말고 다 포함하는 것이다

Objective-C 문법에서 + 메소드는 "클래스 메소드"       - 메소드는 "인스턴스 메소드" 라고 부른다.

동작 방식에 따른 차이가 있음

2번 3번 * 2개는 [ ] 안에 들어가는건 [ 클래스 메소드] 이고 첫번째 문자열 자리는 클래스 부분이다.

Jail 뒤에 *이 붙었다는건 Jail 문자열로 시작하는 모든 클래스를 포함하는 것이다.

위처럼 *Jail* 이라고 적었다면 앞이든 뒤든 중간이든 어디에 Jail이란 문자열이 포함되어있으면 찾아준다.

4번 *은 두번째 문자열 자리 바로 메소드 부분인데 아무 문자열없이  정규식만 표현했으니 

모든 메소드를 의미한다. 

그럼 "*[*Jail* *]" 이란것은 

클래스 메소드(+) 또는 인스턴스 메소드(-)를 다 포함해서 Jail 문자열이 포함된 클래스는 다 추적하고

Jail이 포함된 클래스의 모든 메소드를 다 추적하는 것이다.

정규식을 활용하여 앱 전체의 모든 클래스 메소드를 추적하고싶다면

"*[* *]" 이렇게 되는데 거의 10중 10은 에러가 나서 아래 처럼 앱이 꺼져버리니 잘 사용하지않는다.

 

반응형

정규식을 잘 활용해서 클래스 및 메소드를 효율적으로 추적할 수 있다.

Jail이 포함된 클래스에서 jail이 포함된 메소드만 추적

위 사진에서 알 수 있듯이 검색할 때 영문 대소문자를 철저하게 구별한다.

Jail과 jail의 결과가 다르게 나오는 것을 확인

 

만약 너무 많은 클래스나 메소드가 출력되어 필요없는 결과는 제외하고 추적하고 싶을 때는

-M 옵션을 똑같이 정규식을 활용해서 사용할 수 있다.

아래 사진은 아래 명령의 결과

frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]"

 

여기서 'jail' 이 포함된 메소드를 제외하고 싶다면 뒤에 -M 옵션을 붙여주면된다.

frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]" -M "*[*Jail* *jail*]"

메소드가 제외되어 출력됨

이 옵션은 똑같은 정규식 사용 원리로 클래스든 메소드든 활용해서 사용할 수 있다.

 

그리고 위 사진에서 알 수 있는게 하나 더 있는데 여러가지 키워드를 설정할 수 있다.

frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]" 
-M "*[*Jail* *jail*]" -m "*[*AntiAnti* *]"

위 그림과 같이

Jail이 포함된 클래스와 AntiAnti가 포함된 클래스를 찾고 Jail이 포함된 클래스의 jail이 포함된 메소드는 제외할 수 있다.

옵션은 단말기 자원이 허용하는 만큼 제한없이 사용이 가능한 것으로 추정된다.

 

트레이스의 최대 장점은 클래스나 메소드가 실행될 때 그 결과를 출력해준다는 것이다.

아래 사진처럼 어떤 기능을 사용했을 때 내가 트레이스를 걸어둔 클래스가 실행된다면

 

앱이 종료되거나 사용자가 트레이스를 끝낼 때 까지는 계속 추적해준다

 

반응형
  • hyotwo7658@gmail.com

복사 완료 👍