Android
JVM? DVM? ART?
- 자바 가상 머신(Java Virtual Machine, JVM)
- 자바 바이트 코드를 실행하기 위한 자바 가상 머신
- 자바 바이트 코드는 JVM이 이해할 수 있는 언어로 JVM만 설치되어 있으면 어떤 운영체제에서도 실행 能
- 스택 기반
- 달빅 가상 머신(Dalvic Virtual Machine, DVM)
- 모바일 디바이스 환경에 최적화되어 개발된 가상 머신으로 낮은 메모리에서 실행되도록 설계
- 자바 바이트 코드 변환 후 달빅 바이트 코드(.dex)로 변환
- 레지스터 기반
- ART(Android Runtime)
- 퍼포먼스 개선 등을 위해 구글 DVM -> ART로 변경
- 2016 안드로이드 누가(7.0) 이후 ART에서는 JIT와 AOT 컴파일을 모두 사용
안드로이드 4대 컴포넌트 (구성요소)
- 액티비티
- 서비스
- Broadcast Receiver
- 콘텐츠 프로바이더
안드로이드 루팅
- 안드로이드의 root 권한 획득
- 안드로이드/리눅스 에서는 소수 핵심 유틸리티만 root 권한으로 실행됨
- Rooting 하면 실행 중인 모든 앱에서 root 권한으로 사용 가능
- 불법 유료 앱 설치 용도 多
- 과거 결제해야 설치할 수 있었다면, 요즘 앱 내 제한해제로 바뀜 -> 관리 能
안드로이드 루팅 단점
- 디바이스의 보안을 손상시킴
- root 권한이 없으므로 할 수 있는 동작이 少
- 장치 벽돌
- 무효 보증
분석 시 NOX, genimotion 많이 사용
- Rooting도 가능
JIT & AOT
- JIT(Just-In-Time) 컴파일
- 앱 최초 실행 시 컴파일 수행, 하드웨어 부하로 배터리 시간 등 부정적인 영향 有
- 장점 : 용량 down, 설치 속도 up
- 단점 : 실행 속도 down, 배터리 사용 up, CPU 사용 up
- AOT(Ahead-Of-Time) 컴파일
- 2014 안드로이드 롤리팝(5.0 API 21) 이후 ART(AOT)가 적용
- 앱 설치 시점에서 컴파일을 수행하여, 전력 소비를 줄이면서 성능을 2배 향상 시킴
- 장점 : 실행 속도 up, 배터리 사용 down, CPU 사용 down
- 단점 : 용량 up, 설치 속도 down
OWASP Mobile TOP 10
- 모든 서비스는 이제 '모바일'로 통함. But, 서버는 웹 서비스와 동일한 곳을 바라보고 있음
안드로이드 디바이스 디렉토리 구조
- / : 루트(root) 파일 시스템 디렉로리
- /system : 안드로이드 운영체제 홈 디렉토리, 안드로이드 UI 및 사전에 설치된 앱이 포함되고 운영체제 파일 존재 / 루팅할 때 많이 건드리는 디렉토리
- /data : 사용자 앱 상태 정보가 포함된 파일 시스템 디렉토리 / 취약점 진단 시 자주 본다
- /cache : 일시적인 사용자 상태정보 포함
'Hacking Studies' 카테고리의 다른 글
HSpace - 알아두면 쓸모 있는 정보보호 정책/법 개론 특강 후기 (0) | 2022.02.20 |
---|---|
HACKINGCAMP 24th 후기 (0) | 2022.02.19 |
웹 해킹백과 (0) | 2022.01.20 |
DOM Based XSS (0) | 2021.08.09 |
OllyDBG에서 많이 사용하는 단축키 (0) | 2021.08.06 |