목록AOS/UnCrackable (5)
Self-Improvement
보호되어 있는 글입니다.
보호되어 있는 글입니다.
Uncrackable Level 3 Uncrackable Level 3 을 실행하면 Rooting or tampering이 탐지되었다고 한다. 이를 우회하기 위해서 디컴파일하여 소스코드를 확인해보면 각 검사하는 메소드들 중 참이 하나라도 존재하면 showDialog() 메소드가 동작되어 진다. showDialog() 메소드가 실행되면 System.exit(0)이 실행되어 어플리케이션이 그대로 종료가 되어진다. System.exit() 우회 위에서 분석된 내용을 토대로 어플리케이션이 종료되는 System.exit()를 후킹하여 우회해본다. import frida, sys Hook_package = "owasp.mstg.uncrackable3" def on_message(message, data): if m..
UnCrackable-Level 2 System.exit() 후킹 UnCrackable-Level 2을 실행하면 Level1과 동일하게 루팅을 탐지하는 로직이 존재하여 바로 종료가 되어진다. APK를 추출한 후 디컴파일하여 해당 로직을 확인해보니 이전 레벨과 동일하게 b 클래스의 a(), b(), c() 메소드를 확인하여 하나라도 참이면 루팅으로 간주하게 된다. 그리고는 System.exit()를 실행하여 그대로 종료가 되어짐으로 후킹하여 종료되지 않도록 해본다. import frida, sys Hook_package = "owasp.mstg.uncrackable2" def on_message(message, data): if message['type'] == 'send': print("[*] {0}"...
Uncrackable 1 System.exit() 후킹 이번에는 함수를 후킹해서 해볼 것이다. 마찬가지로 루팅 탐지할 때의 문자열을 디컴파일하여 검색해보면 메인 액티비티에서 c클래스의 a(), b(), c() 메소드의 결과 값 중 하나라도 True일 경우에는 "Root detected!"가 출력된다. 그리고 화면에 출력된 텍스트박스를 클릭하면 a() 메소드에서 System.exit(0)으로 종료가 되어진다. 이 때의 system.exit() 함수를 후킹해서 원래의 기능인 종료가 아닌 단순하게 콘솔 로그를 찍는 로직으로 재정의하여 종료되지 않도록 해볼 것 이다. import frida, sys Hook_package = "owasp.mstg.uncrackable1" def on_message(message..