Study/App

[App]Diva 12. Hardconding Issues - Part 2(하드코딩된 정보 + Frida native)

seomj 2022. 9. 30. 15:06

하드코딩된 정보

메인 페이지는 이러하다. hardcoded된 곳을 찾으라고 한다.

 

jadx를 사용하여 해당 코드를 확인

18번째 줄에서 DivaJni라는 클래스를 실행한다.

 

해당 코드에서는 loadLibrary를 통해 "divajni"라는 so파일을 로딩한다.

 

이를 adb로 확인해보자.

 

strings libdivajni.so로 확인해 봤다.

해당 값들을 하나씩 넣어봐도 해결할 수 있다.

 

해당 파일을 apk로 가져와 직접 확인을 해보자.

memcmp를 사용해 비교하여 return을 해주고 있다.

 

 

따라서 해당 값을 입력해주면 된다.

 

 

Frida native

이번엔 frida를 사용해 보자.

memcmp를 사용하여 해당 값이 0인지에 대해 return 해주고 있다.

memcmp() 함수는 두 개의 인자 값 사이의 관계를 보여주는 값을 return한다.

즉, 같은 값을 가져야 0이 된다.

 

기존 문제는 strncmp로 설정되어 있던 것으로 기억한다.

이때는 아래의 코드를 실행하면 해결할 수 있었다.

Interceptor.attach(
    Module.findExportByName("libdivajni.so", "strncmp"), {
        onEnter: function(args) {
            if(Memory.readUtf8String(args[1]) == "A"){
                console.log("arg0 : " + Memory.readUtf8String(args[0]));
                console.log("arg1 : " + Memory.readUtf8String(args[1]));
                console.log("arg2 : " + args[2]);
            }
        },
        onLeave: function(retl) {
            retl.replace(0);             
        }
    }
);

 

 

 

출처

https://www.ibm.com/docs/ko/i/7.4?topic=functions-memcmp-compare-buffers