FridaLab 문제 풀이 #3

wisdom·2024년 12월 27일
0

준비

  1. Android Studio + AVD (Pixel 5, API 31, x86_64)
    1. Download Android Studio
  2. frida, frida-server (16.2.1)
    1. https://github.com/frida/frida
  3. Jadx-gui
    1. https://github.com/skylot/jadx
  4. adb
    1. https://developer.android.com/tools/releases/platform-tools?hl=ko
  5. Fridalab.apk
    1. https://rossmarks.uk/blog/fridalab/

문제

❓ Make chall03() return true

분석

크게 분석할 것은 없음. MainActivity 내 chall03()이 public 메소드로 정의되어 있고, onCreate 내 onClick에서 바로 호출함

후킹 코드

※ 이제부터 파이썬과 자바스크립트 파일을 별도로 분리

public 메소드이므로 Java.use, Java.choose 두 가지 함수로 호출 가능한데, 어떠한 방식으로든 chall03의 implementation을 수정하여 무조건 true 를 반환하도록 하면 됨

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('myMethod returned: ' + result);
        send('modified result: 1');
        return 1; // Or challenge_01.chall01.value = 1
    };

    // 2, 3
    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');
            //     return true;
            // }
        },
        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');
        return true;
    };
});

실행 결과

profile
보안, 개발, 일상을 기록합니다

0개의 댓글