2020. 5. 20. 11:17ㆍ2020/Android App Hacking
분석환경: Kalilinux, Nox
대상 앱: Uncrackable_level1.apk
앱 실행 시 루팅이 탐지되고, 알림창을 끄는 OK버튼을 클릭하면 exit() 함수가 실행되어 앱이 종료된다.
-> 앱을 실행시켜 본 뒤 자바 코드를 읽고 파악하였음
코드 획득
# apktool d Uncrackable_level1.apk
=> Android.xml, Smali, library 획득
# d2j-dex2jar Uncrackable_level1.apk
=> dex 형식의 안드로이드 파일을 jar형식으로 변환시켜 사람이 읽을 수 있는 자바 코드를 획득한다.
먼저 앱을 실행시키기 위해서 exit함수를 후킹해야한다. = exit함수를 조작하여 앱이 종료되지 않게한다.
exit() function
- java.lang.System class
setImmediate: 프리다 구동 시 자바스크립트 실행.
Java.perform: 자바 스크립트 코드 실행 명령어
console.log: 화면에 로그 출력
Java.use: 자바 클래스 지정 시 사용
Verify버튼을 클릭하여 사용자의 입력값을 처리하는 루틴이 무엇인지 파악하자.
# jd-gui
arrayOfByte = a.a.(b"....),arrayOfByte);
a.a가 뭐지? 소스코드를 보면 import sg.vantagepoint.a.a를 확인할 수 있다.
우리는 ?
sg.vantagepoint.a.a class의 a메서드를 후킹해서 화면에 비밀번호를 출력하도록 하자.
<정리>
해당 메서드의 인자는 두 개가 들어가고 리턴 값으로 올바른 비밀번호값이 반환된다.
verify버튼 클릭 - verify 함수 실행 - 입력값과 저장된 비밀번호를 비교한다.
저장된 비밀번호는 코드내에서 하드코딩되어 사용하는 문자열을 사용해 생성한다.
'2020 > Android App Hacking' 카테고리의 다른 글
HACKTHEBOX. Don't Overreact (0) | 2022.10.05 |
---|---|
UnCrackable_level2.apk 풀이, Frida Native Library 후킹 (0) | 2020.05.20 |
Frida Java Script를 활용한 프로세스 후킹 (0) | 2020.05.19 |
Android Hacking: Ettercap 사용법 (0) | 2020.02.13 |
Android Hacnking: Setup (0) | 2020.02.13 |