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 : 일시적인 사용자 상태정보 포함

 

 

 

+ Recent posts