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

1. 문제확인

더보기

3번 문제 버튼을 클릭 시 "Device is Jailbroken, the application will now exit"라는 창이 띄워진다.

 

2. 문제 해결

더보기

 그러므로 ghidra에서 해당 문구를 검색하여 접근

해당 부분의 주소의 레지스터에서 tbz라는 분기 연산을 이용해 0x0이면 미탐지 0x1은 탐지가 되도록 되어있다.

if(ObjC.available){
	var realbase = Module.findBaseAddress('DVIA-v2');//DVIA-v2 시작 시 메모리주소
	var jail = realbase.add("0x14307c"); // 오프셋 추가한 메모리주소
	
	Interceptor.attach(jail,{
		onEnter:function(args){
			console.log(JSON.stringify(this.context))
		}
	})
}

해당 스크립트를 작성하여 레지스터의 값을 확인한다.

문제 버튼을 눌러 확인한 결과 w8의 값이 "0x1"이 전달되는 것을 확인하였다.

if(ObjC.available){
	var realbase = Module.findBaseAddress('DVIA-v2');
	
	var jail = realbase.add("0x14307c");
	
	Interceptor.attach(jail,{
		onEnter:function(args){
			console.log(JSON.stringify(this.context))
			this.context.x8 = 0x0 // w8의 값을 0x0으로 변조
		}
	})
}

w8의 값을 "0x0"으로 변조하였다.

이 후 미탐지로 분기가 되어 해당 문구가 나오는 것을 확인

 

4,5번 문제는 이 문제와 풀이가 비슷하기 때문에 작성하지 않을 예정