2번의 도전과제는 "chall02()를 실행시켜라"다.
정말 간단하게 실행만 시키면 되는것 같다.
jadx에서 디컴파일한 코드에서 보면 MainActivity에 chall02가 있는것을 볼수 있다.

chall02()의 코드를 확인하여보면

static으로 정의되어 있지 않은것으로 보아 인스턴스 메서드인듯 하다.
인스턴스 메서드를 호출할때는 메모리에 인스턴스화된 객체를 찾아서 호출해야하기 때문에 Java.choose를 사용해야 한다. (static 메서드는 Java.use)
Java.perform(function(){
var Chall02 = Java.choose("uk.rossmarks.fridalab.MainActivity", {
onMatch : function(Chall02){
Chall02.chall02();
console.log("\nchall02()를 찾았습니다.")
},
onComplete : function(){
console.log("\n[+]chall02() 실행 완료.")
}
})
})
위에서 작성한 코드는 Java.choose를 활용하여 MainActivity 클래스에서 chall02()인스턴스 메서드를 찾아 매칭되면(onMatch) 인스턴스를 호출하고, 실행이 완료되면 chall02() 실행 완료를 띄운다(onComplete).
나는 이 코드를 이전에 풀었던 1번 도전과제의 코드와 결합하여 실행시켰다.

오류 없이 잘 실행이 됐다.
이제 에뮬레이터로 돌아가 check 버튼을 눌러보자

깔끔하게 둘다 클리어 하였다.
-다음 포스트에 계속...