4번의 도전과제는 "frida" 문자열을 chall04()에 전달하면 완료된다.

해당 메서드의 코드가 어떤 형태로 이루어져 있는지 확인해보기 위해 jadx로가서 디컴파일된 자바 코드를 보도록 하자.
이전의 문제들과 같이 chall04()또한 MainActivity 클래스에 존재하는 메서드이다.

static이 없는것으로 보아 chall04는 인스턴스 메서드인듯 하다.
str.equals를 이용하여 "frida" 문자열과 같은지 판단하고 있는것을 볼 수 있다.
인스턴스 메서드를 호출해서 값을 전달한다....
그렇다면 2번째 도전과제에서 했던 것과 비슷한 풀이방법을 사용할 수 있을것 같다!
다음과 같이 chall04.js 코드를 작성하였다.
Java.perform(function(){
var Chall04 = Java.choose("uk.rossmarks.fridalab.MainActivity",{
onMatch : function(Chall04){
Chall04.chall04("frida")
},
onComplete : function(){
console.log("[+]chall04에 frida를 전달하였습니다.")
}
})
})
어떤가? 2번째 도전과제에서 했던 것과 유사한 구조이지 않은가?
그렇다 onMatch콜백 함수에서 chall04()메서드를 호출하였을때 ()안에 인자 값을 집어넣어 주었다는것에 차이가 있다!
이제 이 chall04.js를 프리다를 통해 보내보자.
frida -U -l chall04.js FridaLab

음 아주 좋다. 이제 에뮬레이터에서 확인하여보자.

완벽하다!! FridaLab이 기초를 다질 수 있는 애플리케이션이라 그런지 아직까지는 매우 쉽다고 생각된다.
앞으로의 도전과제도 매우 기대가 된다.
- 다음 포스트에 계속 ...