Android 모바일 해킹 - FridaLab(2)

Woongmur·2025년 1월 11일

2번 도전과제

2번의 도전과제는 "chall02()를 실행시켜라"다.
정말 간단하게 실행만 시키면 되는것 같다.
jadx에서 디컴파일한 코드에서 보면 MainActivity에 chall02가 있는것을 볼수 있다.

chall02()의 코드를 확인하여보면

static으로 정의되어 있지 않은것으로 보아 인스턴스 메서드인듯 하다.
인스턴스 메서드를 호출할때는 메모리에 인스턴스화된 객체를 찾아서 호출해야하기 때문에 Java.choose를 사용해야 한다. (static 메서드는 Java.use)

  • Java.choose : Heap 메모리를 스캔하여 클래스에서 실행 중인 인스턴스화된 객체를 찾을때 사용하는 API함수.
    onMatch : 실시간으로 인스턴스 호출
    onComplete : function()의 모든 인스턴스가 열거되면 호출.
Java.perform(function(){
	var Chall02 = Java.choose("uk.rossmarks.fridalab.MainActivity", {
    	onMatch : function(Chall02){
        	Chall02.chall02();
            console.log("\nchall02()를 찾았습니다.")
        },    
        onComplete : function(){
        	console.log("\n[+]chall02() 실행 완료.")
        }
    })
})      

위에서 작성한 코드는 Java.choose를 활용하여 MainActivity 클래스에서 chall02()인스턴스 메서드를 찾아 매칭되면(onMatch) 인스턴스를 호출하고, 실행이 완료되면 chall02() 실행 완료를 띄운다(onComplete).

나는 이 코드를 이전에 풀었던 1번 도전과제의 코드와 결합하여 실행시켰다.

오류 없이 잘 실행이 됐다.
이제 에뮬레이터로 돌아가 check 버튼을 눌러보자

깔끔하게 둘다 클리어 하였다.

-다음 포스트에 계속...

profile
Pentest Study & Life Blog

0개의 댓글