보안개구리

3. Make chall03() return true 본문

앱 진단(Android)/FridaLab 실습

3. Make chall03() return true

보안개구리 2024. 5. 9. 15:37

 FridaLab 실습을 진행하도록 하겠습니다.

 

지난 실습에서는 2. Run chall02()를 진행하였고 이번 실습에서는 3. Make chall03() return true를 진행하겠습니다. 문장만 보면 chall03() 메서드가 return 값으로 true를 반환하면 성공되는 것 같습니다. 

 

 jadx 내 chall03() 메서드 검색 후 해당 메서드가 존재하는 MainActivity로 이동하여 chall03() 메서드를 확인해 보겠습니다.

 

 코드 확인 시 public으로 선언되어 있으며 return 값으로 false를 반환하는 것을 확인하였습니다. Frida를 통하여 후킹 스크립트를 작성해 보겠습니다.

 

// Challenge 03
        Java.choose('uk.rossmarks.fridalab.MainActivity', {
            onMatch: function(fridalab3){
                fridalab3.chall03.implementation = function() {
                    console.log("[***]Challenge03_Sucess!!![***]");
                    return true;
                };
            },
            onComplete: function(){
                console.log("[***]Challenge03_Sucess!!![***]");
            }
        });

 Challenge 02번과 유사하게 Java.choose()를 통해 return 값을 true로 변경해 주었습니다. 참고로 해당 문제는 chall03() 메서드를 호출하는 것이 아닌 반환값만 변경하면 됩니다. challenge01 실습에서  chall01() 메서드의 값을 변경하는 것은 chall01() 메서드를 호출해야 하는 일이기에 use()를 사용하였으나 지금 3번 문제에 경우는 그것이 아니기 때문에 choose()를 사용하든 use()를 사용하든 전부 가능합니다.

 

 프리다를 이용하여 return 값을 변경하여 3번 문제가 클리어된 것을 확인하였습니다.