[iOS] DVIA-v2(Jailbreak Detection - 2)

1. 문제확인

더보기

이 전의 Jailbreak Detection 1번 문제를 해결하고 2번 문제를 풀어보겠다.

etc-image-0

2번 문제는 1번 문제에서 푼 후킹코드로 해결된다. 아마 내 추측으로는 같은 문제지만 다른 방식으로 해결해 보라는 것 같다. 

 

2. 문제 풀이

더보기

그래서 다른 방법이 뭐 있을까 검색하다가 보니 다른 사람들은 메서드를 탐색해서 후킹 하는 방식으로 해결하던 것을 확인하고 시도해 보기로 했다.

if(ObjC.available){
	for(var classlist in ObjC.classes)
	console.log(classlist)
}

해당 코드를 작성하여 frida로 실행해 본 결과 무수히 많은 클래스들이 발견되었다. 그러므로 뒤에 

frida -U -l exam2.js DVIA-v2 | find "Jail"

위와 같이 문자열 찾기를 통해 "Jail" 이라는 문자를 가진 클래스명을 찾았다.

if(ObjC.available){
	var classname = "JailbreakDetection" //찾은 클래스 이름
	var methods = ObjC.classes[classname].$ownMethods // 클래스의 선언된 고유 메서드 포함하는 배열
	console.log(methods)
}

위 코드를 통해 메서드를 찾을것이다. 위에 $ownMethods와 같은 생소한 내용은 이전의 프리다 문법을 참조하면 된다.

blob

해당을 통해 method는 "isJailbroken"인 것을 확인했다.

if(ObjC.available){
	var classname = "JailbreakDetection"
	var methods = "isJailbroken"
	
	var hook = ObjC.classes[classname][methods] // 클래스와 메소드를 배열로 넣는다.
	
	Interceptor.attach(hook.implementation,{
		onLeave:function(retval){
			var Data = {
				"className" : classname,
				"methodName" : methods,
				"return" : hook.returnType,
				"value" : retval
			};
			
		console.log(JSON.stringify(Data));
		}
	})
}

해당 내용의 코드를 작성 후 프리다를 통해 실행 후 문제 2번의 버튼을 클릭

blob

해당 결과를 통해 boolean 값으로 받으며 value는 0x1이라는 것을 확인하여 16진수 의 1인 것으로 확인이 되었다.

이것을 boolean이기 때문에 0이라는 값으로 변경해주면 될 것 같다.

if(ObjC.available){
	var classname = "JailbreakDetection"
	var methods = "isJailbroken"
	
	var hook = ObjC.classes[classname][methods]
	
	Interceptor.attach(hook.implementation,{
		onLeave:function(retval){
			var Data = {
				"className" : classname,
				"methodName" : methods,
				"return" : hook.returnType,
				"value" : retval
			};
			
		retval.replace(ptr("0x0")) // 반환값 변조
		console.log(JSON.stringify(Data));
		}
	})
}

frida 문법으로 반환값을 변조해줬다.

etc-image-3

그 결과 value 값이 "0x0"으로 변경되었다.

etc-image-4

이후 boolean 값을 변경하여 루팅탐지가 우회된 것을 확인함

 

'앱 진단 > ios' 카테고리의 다른 글

[iOS] - DVIA-v2 (Jailbreak Detection 1)  (0) 2025.02.18
[iOS] - 어셈블리어 명령어  (0) 2025.02.17
[iOS] Frida 문법  (1) 2025.02.17
[iOS] 파일 시스템  (0) 2025.02.14
[iOS] 계층 구조  (0) 2025.02.14