Kilkat

안드로이드 OS 구조 본문

Security/app application hacking

안드로이드 OS 구조

KimKwangWoon 2023. 11. 30. 22:52

출처: https://developer.android.com/guide/platform?hl=ko

 

1. Linux Kernel

안드로이드의 경우 리눅스를 기반으로 만들어진 OS이다. 그로인해 당연하게도 Kernel의 경우도 Linux Kernel을 사용중이다. Kernel의 경우 하드웨어와의 통신을 담당을하고 메모리, 프로세스 등 여러 기능들을 담당하는 OS의 핵심 Layer라고 할 수 있다. 추가적으로 Linux Kernel의 경우 안정성 또한 뛰어나 다양한 기기에서 작동이 가능하다.

 

2. HAL(Hardware Abstraction Layer)

HAL의 경우 하드웨어와 OS의 중간에서 표준화된 인터페이스를 제공한다. 이러한 특징으로 인해 개발자는 안드로이드의 하드웨어에 대해서 자세히 몰라도 개발을 쉽게 할 수 있다. 확장성또한 좋아서 새로운 하드웨어가 개발되거나 업데이트 된다면 HAL 모듈을 추가, 수정으로 쉽게 적용이 가능하다.

 

3. Native C/C++ Libraries

Native C/C++ Libraries 의 경우 안드로이드에서 계산, 그래픽과 같은 작업 복잡한 연산등을 수행하는 계층이다. 뿐만 아니라 성능 최적화에 있어서도 중요한 계층이다. GPT에서 얻은 추가적인 답변으로는 보안적으로 취약할 수 있는 부분이니 개발 시 보안적인 부분을 고려해야 하는 계층이라고 나온다. 아마 C와 C++의 경우 개발자가 메모리 관리를 하는데 있어서 권한을 가지기 때문에 보안과 밀접한 관련을 가지지 않나 싶다. 추후에 bugbounty를 진행함에 있어 해당 계층을 유의깊게 볼 필요가 있어보인다.

 

4. ART(Android Run Time)

ART의 경우 안드로이드 OS에서 애플리케이션을 실행하기 위해 필수적으로 필요한 요소이다. 기존에 앞에서 설명한 계층의 경우 최적화 혹은 하드웨어와의 원활한 통신을 위해 주로 존재한 계층들이 많았는데 ART의 경우는 애플리케이션단을 위해 필요한 계층이다. 추가적으로 ART또한 최적화에 있어서 도움이 되는 계층이다. AOT라는 컴파일 방식을 통해 애플리케이션을 설치시 바이트코드의 애플리케이션을 기계어로 변환해 실행하는 부분에 있어서 우위를 가지게 만든다. 또한 메모리와 64비트 아키텍처를 지원한다.

 

5. Java API Framework

Java API Framework의 경우 운영체제의 상위 계층에 위치한다고 한다. 이로 인해 개발자들은 애플리케이션을 개발할 때 자주 사용하는 API와 서비스들을 쉽게 제공받을 수 있다. 또한 하드웨어를 쉽게 컨트롤할 수 있는 API들을 제공받을 수 있다. API를 통해 하드웨어를 컨트롤하다보니 개인적으로 생각할때 보안적으로 많은 기능구현 및 테스트가 필요해 보이는 계층이다. 

 

6. System Apps

System Apps의 경우 안드로이드 OS와 같이 필수적으로 설치되어 있는 기본 App들을 의미한다. 보통 휴대폰 제조사나 OS개발 주체에 따라서 바뀌는 것 같다.

 

 

 

Comments