chall05() 함수는 chall04()와 비슷하게 인자로 들어온 문자열이 ‘frida’인지 검사하고 플래그 값을 세팅함
MainActivity의 onCreate에서 바로 호출되므로 Java.use도 사용 가능할 것으로 보임
간단하게 Java.use 를 통해 chall05 구현부에서 인자 값을 frida로 호출하게끔 수정하여 해결
Java.perform(function () {
// 1
var challenge_01 = Java.use('uk.rossmarks.fridalab.challenge_01');
challenge_01.getChall01Int.implementation = function () {
send('challenge_01::getChall01Int called');
var result = this.getChall01Int();
send('getChall01Int returned: ' + result);
send('modified result: 1\n');
return 1; // Or challenge_01.chall01.value = 1
};
// 2, 3, 4
Java.choose('uk.rossmarks.fridalab.MainActivity', {
onMatch: function (instance) {
send('Found instance: ' + instance);
// 2
send('call MainActivity::chall02');
instance.chall02();
// 3
// instance.chall03.implementation = function () {
// send('call MainActivity::chall03');
// var result = instance.chall03();
// send('chall03 returned: ' + result);
// send('modified result: true\n');
// return true;
// }
// 4
send('call MainActivity:chall04("frida")\n')
instance.chall04('frida');
},
onComplete: function () { }
});
// 3
var MainActivity = Java.use('uk.rossmarks.fridalab.MainActivity');
MainActivity.chall03.implementation = function () {
send('call MainActivity::chall03');
var result = this.chall03();
send('chall03 returned: ' + result);
send('modified result: true\n');
return true;
};
**// 5
MainActivity.chall05.implementation = function (str) {
send('call MainActivity::chall05 with str: ' + str);
send('call MainActivity::chall05 with str: frida\n');
this.chall05('frida');
};**
});