지난 포스팅(DVIA Jailbreak Detection 1)에 이어서 포스팅하겠습니다.

 

Jailbreak Test 1만 우회를 했었고, Jailbreak Test2 로직 분석 및 우회를 하겠습니다.

 

IDA로 실행파일을 뜯어보면,

 

jailbreak Test2 Tapped:라는 함수를 확인할 수 있습니다. 여기서 탈옥 여부 확인 후 showAlertForJailbreakTestisJailbroken 함수에서 Alert띄워주는 것 같네요.

 

인자로 boolean형을 받고 리턴타입은 없는 것을 확인할 수 있습니다.

 

인자로받은 값을 이용해서 탈옥폰인지 순정폰인지 Alert을 띄워주네요

 

그럼 Frida를 통해 인자값을 변조하도록 하겠습니다.

 

Frida 공홈에 들어가면 기본적으로 나와있는 소스인데, 해당 소스를 통해 앱이 가지고 있는 클래스명을 전부확인이 가능합니다.

 

실행시키면 다음과 같이 IDA에서 확인했던, Jailbreak클래스를 확인할 수 있습니다.

 

위에서 확인했던 클래스 내에 선언되어 있는 함수를 확인하는 소스입니다.

 

IDA에서 확인했던 jailbreakTest2Tapped:를 확인할 수 있네요.

 

이처럼 showAlertForJailbreakTestisJailbroken 함수를 찾아저 해당 함수명을 다 적어줘야 합니다.

앞뒤의 특수문자 - , : 까지 다 적어줘야 프리다에서 후킹이 가능합니다.(이부분에서 한참고생했네요...)

 

IDA에서 클래스 및 함수명까지 확인했는데 굳이 프리다로 또 찾아가는 이유는?

비교해 보면 IDA로 보는 함수명과 프리다로 출력한 함수명이 조금다른것을 볼 수 있는데요, 이 차이 때문에 Frida가 Method를 찾지 못하므로 정확하게 적어주셔야 합합니다.

 

결론적으로, showAlertForJailbreakTestIsJailbroken: 함수를 후킹하는 코드입니다.

 

다만, 후킹할때 args[2]를 변조했는데 IDA에서 확인한 함수 인자는 한개밖에 없었습니다.

이유는

Frida공홈에서 확인이 가능한데, args[2]부터가 실제 파라미터이고 0,1은 self,selector로 정의되어 있다고 합니다.

 

자세한 내용은 다음 블로그에서 확인이 가능합니다.

https://www.letmecompile.com/objective-c-런타임runtime-내부-동작-분석/

+ Recent posts