Frida로 익명 클래스 메소드 후킹하기

옥영진·2020년 10월 6일
1

저번에 프리다를 공부하면서 작성했던 중에 익명 클래스의 메소드는 후킹하지 못하고 다른 방법으로 후킹했었다.

해당 글에서 onClick() 메소드를 후킹하지 못해서 다른 방법으로 루팅 탐지를 우회했었다. 알아보니 onClick() 메소드는 DialogInterface.OnClickListener() 에 의해 생성된 익명 클래스에 속한 메소드이기 때문에 sg.vantagepoint.uncrackable1.MainActivity 뒤에 $ 와 함께 번호를 입력해야 한다고 한다. 따라서 onClick() 메소드를 후킹 하는 스크립트를 작성하면 아래와 같다.

Java.perform(function() {
    console.log("[*] START...")
    var mClass = Java.use("sg.vantagepoint.uncrackable1.MainActivity$1")
    mClass.onClick.implementation = function() {
        console.log("[*] Clicked ")
    }
})

$ 뒤에 오는 번호는 해당 클래스에 존재하는 익명 클래스 순서대로 부여되는데, jadx 로 apk 파일을 분석할 때 옵션에서 inline anonymous classes 를 체크해제 한 후 사용하면 각 익명 클래스 번호를 알 수 있다.

맨 처음에 보여 주었던 소스코드와 비교하면 어떤 점이 다른지 한 눈에 알 수 있다. 익명 클래스의 번호가 어떻게 부여되어 있는지 알 수 있고, 클래스 객체를 가져올 때 주석을 참고할 수 있다.

profile
안녕하세요 함께 공부합시다

0개의 댓글