1. MainActivity에서 chall06 함수를 확인.
public void chall06(int arg3){
if(challenge_06.confirmChall06.arg3)) {
this.completeArr[5] = 1;
}
}
challenge_06 클래스에서 confirmchall06을 호출한 뒤에 if 결과가 참이면 completeArrp[5] 6번 문제가 풀린다.
2. Java.use vs Java.choose?
fridalab 문제를 풀 때 가장 고민하게 되는 API 호출 함수 정하기.
Mainactivity에 있는 함수를 후킹하면 choose 독립된 클래스라면 use를 사용하는데, chall06은 mainactivity에도 있고 별도로challenge_06에도 있어서 둘 다 써줬다.
이전에 사용했던 스크립트를 모두 긁어모아 만들어낸 문제 해결 소스코드는 다음과 같다.
setTimeout(function() {
Java.perform(function() {
var cs6 = Java.use("uk.rossmarks.fridalab.challenge_06");
Java.choose("uk.rossmarks.fridalab.MainActivity",
{
onMatch: function(cs) {
cs.chall06(challenge_06.chall06.value);
},
onComplete: function() {
console.log("ok");
}
})
})
}, 10000);
use로 challenge_06 클래스를 호출하고, choose를 통해 mainactivty의 chall06 메소드를 호출해 실행시킨다.
use 사용 후에 addchall06 함수를 후킹해야하는 거 아닌가 싶어 overload로 이리저리 끄적여보긴 했으나 먼저 푼 선배의 힌트로 use에서는 따로 명령줄을 쓸 필요가 없다는 사실을 얻어 과감하게 뺐다.
결과는...
{'type': 'error', 'description': "ReferenceError: 'challenge_06' is not defined", 'stack': "ReferenceError: 'challenge_06' is not defined\n
at onMatch (/script1.js:8)\n at _chooseObjectsArtLegacy (frida/node_modules/frida-java-bridge/lib/class-factory.js:323)\n at <anonymous>
(frida/node_modules/frida-java-bridge/lib/class-factory.js:250)\n at vt (frida/node_modules/frida-java-bridge/lib/android.js:573)", 'fileName':
'/script1.js', 'lineNumber': 8, 'columnNumber': 1} -> None
음. challenge_06이 정의되어 있지 않다고 한다. 뭐가 문제지 싶어 한동안 소스코드만 바라봤는데, 이게 웬걸.
setTimeout(function() {
Java.perform(function() {
var cs6 = Java.use("uk.rossmarks.fridalab.challenge_06");
Java.choose("uk.rossmarks.fridalab.MainActivity",
{
onMatch: function(cs) {
cs.chall06(cs6.chall06.value);
},
onComplete: function() {
console.log("ok");
}
})
})
}, 10000);
MainActivity에 있는 chall06 함수에 Java.use로 호출할 challenge_06의 값을 넣어줘야하는데
var cs6으로 선언해두고서 정작 cs.chall06(challenge_06.chall06.value)로 challenge_06 자체를 넣어뒀다.
새롭게 수정한 코드를뒤 실행을 하게 되면.
엥 진짜 풀렸다. 혹시 몰라 찾아본 fridalab 6번 문제의 스크립트들(다른 사람들이 푼 거)와는 전혀 다른 스크립트지만 어찌저찌 풀렸으면 된 게 아닐까? 제대로된 코드 분석과 원리는 조금 더 공부해서 추가해봐야겠다.
'Android > 실습' 카테고리의 다른 글
[Frida-Lab#5] 코드 분석 및 풀이 (0) | 2023.03.31 |
---|---|
[Frida-Lab#4] 코드 분석 및 풀이 (0) | 2023.03.22 |
[Frida-Lab#3] 코드 분석 및 풀이 (0) | 2023.03.22 |
[Frida-lab #2] 코드 분석 및 풀이 (0) | 2023.03.16 |
[Frida-lab #1] 코드 분석 및 풀이 (0) | 2023.03.16 |