Android - 실습

FridaLab 2번 풀이

곽도우너 2023. 3. 18. 18:53

1번을 해결했으니 이제 2번을 풀 차례이다.

2번 문제는 chall02() 함수를 실행시키면 되는 문제이다.

 

 

MainActivity.class

1번 풀이와 동일하게 먼저 2번 문제가 들어있는 파일을 찾아주었다. 1번 문제와는 다르게 2번은 MainActivity.class에 들어있었다.

chall02의 코드를 살펴보니 private이기 때문에 바로 호출하여 사용할 수 없다.

 

 

Java.perform(function(){

    var main;
    Java.choose('uk.rossmarks.fridalab.MainActivity', {
    onMatch: function(instance) {
        main = instance;
    },
    onComplete: function() {}
    });
    main.chall02();
});

이런 경우 Java.choose()를 이용해서 instance를 불러오면 된다.

+) Java.choose() 함수는 힙에서 인스턴스화된 객체를 찾아주는 기능을 한다.

(private -힙 영역에 동적으로 메모리를 할당해 준다.)

Java.choose()로 MainActivity를 불러온 뒤 해당 함수를 호출하여 실행시켜 주었다.

Java.choose()로 일치하는 클래스를 찾으면 onMatch 구문이 실행된다. 

onMatch 코드가 전부 실행되면 onComplete 구문이 시작된다.

 

 

1번과 동일한 방법으로 코드를 넣고 실행시켜주었다.

이번에는 해당 코드를 chall022로 저장해주었다.

 

 

성공

성공! 은 했지만 2번 문제 해결 함수만 넣어주니 2번만 초록불이 들어왔다.

 

 

진짜 성공

그래서 chall022 파일에 1번 문제 해결 함수와 2번 문제 해결 함수 모두 추가해주니 다음과 같이 1번, 2번 모두 초록불이 들어오는 것을 확인할 수 있었다.