[FridaLab]5. Always send "frida" to chall05()
Ch5. chall05 메서드에 항상 'frida' 문자열을 전달하기
1) chall05() 메서드 확인
chall05()는 check 버튼을 누를 때마다 실행되는 메서드이다.
즉 check 버튼을 누를 때마다 "frida"를 전달해야 하지만, 기존 함수 동작을 그대로 실행해야 한다.
+) 지난번에 onResume()를 처음 이해했을 때, 기존 함수의 동작을 하도록 this를 사용했었다!!
2) 스크립트 작성
메서드가 실행된 적이 있으니, use를 이용한다.
이번엔 overload도 써보고싶어서, 함수가 여러개인 경우는 아니지만 사용해보기!
// ch05.js setImmediate(function() { Java.perform(function() { var ch_05 = Java.use("uk.rossmarks.fridalab.MainActivity"); ch_05.chall05.overload("java.lang.String").implementation = function(arg) { this.chall05("frida"); console.log("Solved Challenge 05!"); } }) }) |
3) 실행 결과
overload에 "java.lang.String"을 사용했던 이유
"자바 오버로딩"이란 클래스 내에 같은 이름을 가진 메서드가 여러 개 존재하고, 각 메서드마다 서로 다른 매개변수를 가지고 있는 메서드를 정의하는 것
해당 문제에서는, chall05가 string 파라미터를 가지고 있었기 때문에 "java.lang.String"처럼 형식 지정을 해준 것!
하지만 MainActivity 클래스 내에 chall05 메서드는 한 개만 존재하므로,
ch_05.chall05().implementation = function(arg) {~~}
로 작성해도 상관없다.