앱 진단(Android)/FridaLab 실습
2. Run chall02()
보안개구리
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번 문제도 클리어된 것을 알 수 있습니다.