본문 바로가기

해킹-보안/모바일

FridaLab 1~5 문제

반응형

* fridaLab apk: https://rossmarks.uk/blog/fridalab/

FridaLab 문제

 

1번 문제 

- challenge_01 클래스 내 chall01 변수 값을 1로 변경

Java.perform(function() {
    const chall_01 = Java.use("uk.rossmarks.fridalab.challenge_01");
    chall_01.chall01.value = 1;
    console.log("chall01: ",chall_01.chall01.value);
  });

 

CHECK 버튼 클릭 후 해당 문제에 연두색 하이라이팅된 것을 통해 정답 확인 가능

 

 

2번 문제 

- Chall02 메서드 실행하기

* 클래스 메서드(static 메서드)
- 메서드 앞에 static 이 존재
- 메소드 내에서 인스턴스 변수 사용 불가
- '클래스이름.메서드이름(매개변수)'와 같이 호출가능
- Java.use()를 이용해 객체 호출

* 인스턴스 메서드
- 반드시 객체가 생성돼야 호출 가능
- 메서드 내에서 인스턴스 변수 사용 가능
- 객체 생성 후 '참조변수.메서드이름()'으로 호출
- Java.Choose()를 이용해 객체 호출


chall02는 static 메서드가 아니여서 즉시 호출이 불가하므로 인스턴스 메서드 호출을 위한 choose 함수 이용

Java.perform(function() {
    Java.choose("uk.rossmarks.fridalab.MainActivity", {
      onMatch: function(chall_02) {
        chall_02.chall02();
      },
      onComplete: function() {
        console.log("call chall_02 instance method");
      }
    })
  });

 

 

3번 문제 

- chall03 메서드 리턴 값을 false에서 true로 변경하기

 

 

chall03 인터페이스를 구현한다.

* implements 는 부모의 메소드나 변수를 그대로 가져다 쓰는게 아닌 반드시 오버라이드해서 사용해야함.
chall03 인터페이스에 있는 프로퍼티 및 메소드를 전부 보유하거나 구현해야하는데 문제에서는 인자가 존재하지않으므로 빈공간임

Java.perform(function() {
  // 해당 메소드는 Java.use와 Java.choose 함수 모두 사용 가능
    var chall_03 = Java.use("uk.rossmarks.fridalab.MainActivity");
    
    // class.functionName.implementaion
    chall_03.chall03.implementation = function() {
      console.log("chall_03 method override");
      return true;
    }
});

 

 

4번 문제 

- chall04 메소드 인자에 frida 문자열 전달

Java.perform(function() {
      Java.choose("uk.rossmarks.fridalab.MainActivity", {
        onMatch: function(str) {
          str.chall04("frida");
        },
        onComplete: function() {
          console.log("call chall04");
        }
    });
});

 

 

 

5번 문제 

- chall04 메소드와는 달리 chall05는 버튼을 누를 때마다 frida 문자열을 전달해야 함 

check 버튼 클릭 시 "notfrida" 문자열을 전송하므로 chall05 함수를 String 형태로 overload하여 frida 문자열 전달 

Java.perform(function() {
    var chall_05 = Java.use("uk.rossmarks.fridalab.MainActivity");
    chall_05.chall05.overload("java.lang.String").implementation = function(arg) {
      this.chall05("frida");
      console.log("call chall05");
    }
  })

 

반응형

'해킹-보안 > 모바일' 카테고리의 다른 글

IOS Fiddler HTTPS 캡쳐  (0) 2022.01.07
FridaLab 6번 문제  (0) 2021.12.26
frida 설치하기  (0) 2021.12.21
안드로이드 앱 교육 1일차  (0) 2021.12.21
adb 명령어 및 앱 서명 방법  (0) 2021.12.21