3. Make chall03() return ture
chall03이란 함수를 참값으로 리턴하면 되는 내용으로 보인다.
먼저 chall03이 어떻게 짜여저 있나 보기 위해 mainactivity로 가서 찾아보았다.
public boolean chall03() {
return false;
}
이렇게 boolean 자료형으로 chall03을 선언을 해주었다. 이것의 값을 true로 바꾸기 위해
public으로 선언되어 있으므로, frida의 Java.use를 이용해 chall03을 true로 리턴해주면 될 것으로 보인다.
setImmediate(function(){
Java.perform(function() {
var chall_03 = Java.use("uk.rossmarks.fridalab.MainActivity");
chall_03.chall03.implementation = function() {
return true; }
console.log("\nchallenge 03 풀었냐..?");
});
});
자바스크립트에 익숙해진다면 훨씬 가볍게 풀 수 있을것으로 보인다. 조만간 frida 기본 문법에 대해서도 다뤄야 할 것 같다.
4. send "frida" to chall04()
frida라는 문자열 (string)을 chall04()에 반환하면 되는것으로 예상되는 문제이다.
public void chall04(String str) {
if (str.equals("frida")) {
this.completeArr[3] = 1;
}
}
이번 메소드는 str 라는 인자에 firda라는 문자열이 같다는것이 확인되면 completeArr[3]에 1이라는 값이 저장되어 글씨를 초록색으로 만드는 로직임을 알 수 있다. 따라서 메소드를 호출 할 때 frida 문자열을 전달하게 하면 된다. instance 메소드를 호출하기 때문에 Java.choose를 이용하도록 하겠다.
Java.choose(className, callbacks)
안드로이드 앱 내부의 인스턴스를 다루기 위한 것으로, 힙에서 인스턴스화 된 객체를 찾아 callback으로 넘겨준다.
- onMatch : 일치하는 인스턴스를 찾을 경우 호출한다.
- onComplete : 일치하는 것을 모두 찾고난 후에 호출한다.
setImmediate(function(){
Java.perform(function() {
Java.choose("uk.rossmarks.fridalab.MainActivity", {
"onMatch": function(chall_04) {
chall_04.chall04("frida");
},
"onComplete": function() {
console.log("\nchallenge_04 solved!");
}
})
});
});
'seKUrity_Study : Andriod' 카테고리의 다른 글
[andriod 실습] frida lab 5번, 6번 (0) | 2023.04.29 |
---|---|
[Andriod] 안드로이드의 부팅 순서 (1) | 2023.03.26 |
[andriod 실습] frida lab 1번 2번 (0) | 2023.03.19 |
[andriod] JNI와 NDK (0) | 2023.03.14 |
[andriod] 안드로이드에서 사용하는 자바와 코틀린 (0) | 2023.03.14 |