저번에 Uncrackable3를 도전했었는데 당시에 다운받았던 앱이 오류가 있었던 건지 실행하면 바로 종료가 되어 분석을 하지 못했는데


며칠전 다시 다운받아 설치해보니 이번엔 잘돌아가네요 :) (당시에 앱 자체의 오류가 맞았을까요....)



앱 실행 시 위와 같이 루팅감지되어 바로 종료가 됩니다


디컴파일 후에 소스코드를 보면



MainActivity의 onCreate부분에서 루팅체크하는걸 볼 수 있습니다 


루팅체크로직을 따라가 보면



다음과 같은걸 볼 수 있는데 저는 Supersu를 사용해서 위 로직에서 탐지가 된듯합니다


간단하게 Frida를 이용해서 우회해 보겠습니다.


jscode = """

    Java.perform(function() {

        console.log("[*] Hooking calls to System.exit");

        root1 = Java.use("sg.vantagepoint.util.RootDetection");

        root1.checkRoot1.implementation = function() {

            console.log("[*] checkRoot1 Hook");

            return false;

        }

        root1.checkRoot2.implementation = function() {

            console.log("[*] checkRoot2 Hook");

            return false;

        }

        root1.checkRoot3.implementation = function() {

            console.log("[*] checkRoot3 Hook");

            return false;

        }

    });

"""


후킹 스크립트는 위와 같이 간단하게 탐지가 되어도 false를 리턴하게 작성하였습니다


실행해보면...



다음과 같이 에러가 나는데요 여기서 왜 에러가 나는지 몰라 한동안 깊은 삽질을 했네요 :(


결론은 MainActivity에서 libfoo.so파일을 호출해서 native코드를 실행하는데 .so파일의 경우 로드될때 .init_array가 먼저 실행된다고 합니다


그럼 .so파일의 .init_array를 살펴보겠습니다 ida에서 Control + S를 눌러 확인이 가능합니다



Ctrl + S를 이용하여 .init_array를 확인해 보면

아래 그림과 같이 offset sub_8D50을 호출하는 것을 알 수 있습니다

 


sub_8D50으로 들어가면 pthread_create를 이용한 anti-debugging 기법같은데요 thread가 생성되며 호출되는 함수(sub_8BC0)를 살펴보겠습니다



이 함수안에보면 메모리를 읽어 frida와 xposed를 확인하는 루틴이 존재하네요 ㅠㅠㅠ

frida를 이용해서 후킹하려고 하면 여기서 탐지되어 강제로 종료되는 것을 확인할 수 있습니다



android_log_print를 보면 37942자리에 있는 값을 ddms에 로그로 띄워주는 것 같네요 

37942 = 0x9436이므로 해당 주소로 가보면



탐지될 경우 UnCrackable3에 Tampering dtected! Terminating...이라고 출력될 것 같네요



ddms로 로그를 확인해보면 프리다로 실행시켰을 경우, 다음과 같이 탐지되는 것을 볼 수 있습니다



하나로 끝내려고 했는데 너무 길어져서 다음에 이어 작성해야겠네요 ;)

Uncrackable3-2로 끝내겠습니다 :)


문제 풀이(3-2)는 아래에서 확인하시면 됩니다~

https://taesun1114.tistory.com/entry/Uncrackable3-2

'Mobile' 카테고리의 다른 글

apktool first type is not attr  (0) 2018.10.04
Android Proxy Burp 인증서 설치  (2) 2018.09.15
APK IDA로 동적디버깅  (0) 2018.02.22
welcome to droid (codegate2018)  (2) 2018.02.11
INSTALL FAILED TEST_ONLY  (1) 2018.02.06

+ Recent posts