안드로이드에선 intent를 통해 화면 우회가 가능하고 iOS에선 cycript를 통해 화면 우회가 가능하다.
iOS는 cycript나 frida를 이용하면 우회가 가능함. 물론 iOS의 OS버전에 따라 cycript 사용이 불가능할 수도 있음.
이번 우회에 사용된 iOS 기기 스펙
- iphone 6s, iOS 11.0.2 version
0. 탈옥
먼저 cycript를 사용하기 위해선 전제조건을 iOS가 탈옥이 되어 있어야 한다.
탈옥은 iOS 버전에 따라 방법이 다르지만, 11.x대역이면 아랫글을 참조해서 탈옥을 진행하면 됨.
https://kk-7790.tistory.com/150
1. cycript 설치 방법
탈옥한 기기에서 Cydia를 통해 cycript 설치를 진행
cydia 외에 다른 방법으로 http://www.cycript.org/debs/ 링크에서 deb 파일을 다운받아 설치도 가능
2. 화면 우회
cycript 설치가 됐으면 ssh로 아이폰에 접속한 뒤 우회할 앱의 pid를 확인
ps -ef | grep [app 이름]
만약 ssh에서 확인이 안되면 frida-ps -Ua로 확인
pid 확인이 완료되면 cycript실행
cycript -p [pid]
- cycript -p [pid] : -p옵션은 attach한다는 의미
이제 cycript의 명령어를 사용해서 화면 우회를 진행하면 됨.
로그인한 뒤의 화면으로 이동해야 하니, 그 화면의 주소 값을 알아야 하며, iOS기기로 로그인 한 뒤의 화면에서 명령어를 실행해 메모리값을 확인한 뒤 변수에 해당 값을 저장해 줌.
var m =[[MainViewController alloc]init]
그리고 로그인 화면(우회해야 하는 페이지)으로 이동한 뒤 강제 이동 시도
UIApp.keyWindow.rootViewController = m
강제 이동이 된다면 로그인 우회가 가능하나, 로그인이 되지 않은 상태로 강제 이동이라 사용에 제한이 있을 수 있음
3. cycript 명령어
화면 강제 전환 외에도 cycript를 사용하여 여러 가지를 할 수 있는데, 아래 사이트에서 cycript에서 사용 가능한 명령어 확인이 가능함.
http://iphonedevwiki.net/index.php/Cycript_Tricks
참고로 매번 현재 메인뷰를 확인하면 메모리 위치 값이 달라지는걸 볼 수 있다.
그 이유는 프로세스가 실행될 때 메모리에서 할당되는 공간이 매번 다르기 때문이니, 매번 어플의 프로세스의 실행 위치가 랜덤으로 지정되기 때문에 달라진다.
'Security > Mobile Hacking' 카테고리의 다른 글
[Android] 화면 강제이동(adb를 사용한 Activity 강제이동) (0) | 2023.02.28 |
---|---|
Android 7.0 루팅(갤럭시 노트 5) (0) | 2023.02.24 |
[Android] 안드로이드 apk 추출 방법 (0) | 2022.08.30 |
PC에서 안드로이드 접속 - adb shell (0) | 2022.08.30 |
앱 무결성 검증 여부 - Smali Toast 메세지 코드 (0) | 2022.08.30 |