[해킹보안] 창과 방패 끝없는 전쟁

Jailbreak Test1에 이어 Test2 문제를 풀어보았다.

 

먼저 탈옥 탐지를 담당하는 DVIA-v2 내의 Class 추출하기 위해 스크립트를 짰다. 

Class 추출 스크립트

 

그리고 frida 실행시켰다.

 

frida -U -l classes.js DVIA-v2 | grep Jailbreak

 

아래와 같이 Method를 추출하기 위해 스크립트를 짰다.

Method 추출

 

그리고 frida 실행시켰다.

 

 

Class Method 추출했다.

그리고 return 값을 확인하는 스크립트를 짰.

return 값 확인

 

 

frida 실행시켜 return 값을 추출했다.

 

frida -U -l returnvalue.js DVIA-v2

return 값 추출

 

 

Jailbreak test2 응용 프로그램을 , 1 부울 값이 Method return 되는 것을 알았다.

 

이제 return 값을 변조하기 위해 스크립트를 짰다.

 

return 값 변조 스크립트

 

 

코드를 사용하면 클래스, 메서드 반환 할 값을 정의해야 한다. 앞에서 0x1을 봤기 때문에, 부울의 반대는 0x0일 것이. 따라서 반환 (newretval) 0x0 으로 지정될 것이다.

 

이제 frida를 실행시켰다.

 

frida -U -l overwrite.js DVIA-v2

 

아이폰에서 Jailbreak test2 다시 하면 ‘Device is Not Jilbroken’  이라는 팝업 창을 있었다.

 

 

[참고 사이트]

https://philkeeble.com/ios/reverse-engineering/iOS-Bypass-Jailbreak/

 

Bypassing JailBreak Detection - DVIAv2 Part 2

A guide on how to bypass jailbreak detection on the DVIAv2 app for iPhones.

philkeeble.com

https://frida.re/