보안개구리 2024. 5. 9. 11:20

FridaLab 실습을 진행하도록 하겠습니다.

 

 

 지난 실습에서는 1. Change class challenge_01‘s variable ’chall01‘ to:1을 진행하였고 이번 실습에서는 2. Run chall02()를 진행하겠습니다. 단순히 chall02()를 실행시키면 문제풀이에 성공합니다.

 

  jadx 내 chall02를 검색 후 해당 메서드가 존재하는 MainActivity로 이동합니다

 

 MainActivity 내 chall02() 메서드를 확인하였습니다. 해당 메서드는 private로 선언되어 있기 때문에 외부 클래스나 Frida의 java.use()를 통해 직접 호출할 수 없습니다. 따라서 java.choose()를 통해 후킹을 진행하도록 하겠습니다.

 

// Challenge 02
Java.choose('uk.rossmarks.fridalab.MainActivity', {
	onMatch: function(fridalab2) {
		fridalab2.chall02();
	},
	onComplete: function() {
		console.log("[***]Challenge02_Sucess!!![***]");
	}
});

 // Challenge 02 부분을 확인하면됩니다. chall02() 메서드의 경우 접근이 불가능하게 때문에 java.use()가 아닌 java.choose()를 사용하여 현재 메모리 내 로드된 클래스의 모든 인스턴스를 찾은 후 호출합니다. 그 후 chall02() 메서드를 호출한 후 console.log를 출력하며 끝냅니다. 해당 스크립트를 프리다를 통해 실행해 보겠습니다.

 

 프리다가 정상적으로 실행되어 콘솔이 출력되며 FridaLAB 앱 내 CHECK 버튼 클릭 시 2번 문제도 클리어된 것을 알 수 있습니다.