1. 안드로이드(Android)의 이해

2024. 12. 2. 09:00·기반 지식/Android

1. 안드로이드(Android) 운영체제 소개

Android

 

○ 안드로이드는 구글에서 개발한 리눅스 기반 오픈 소스 플랫폼으로, 모바일에서 운영체제 역할을 수행

○ 구글 플레이 스토어 및 기타 미켓 플레이스를 통한 타사 앱 설치를 지원함

○ 오늘날 플랫폼은 휴대전화, 태블릿, 웨어러블 기술, TV 및 기타 스마트 디바이스와 같은 최신 가술의 토대가 됨

 

2. 안드로이드 운영체제 구조

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

 

○ Linux 커널

    ● Adroid 플랫폼의 기반은 리눅스 커널
    ● ART(안드로이드 런타임)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 리눅스 커널을 사용

    ● 경량, 저전력, 안정화, 빠른 반응 등의 장점이 존재함

 

○ HAL (하드웨어 추상화 계층)
    ● 상위 수준의 Java API 프레임워크에 디바이스 하드웨어 기능을 사용할 수 있도록 하는 표준 인터페이스를 제공함
    ● HAL은 카메라 모듈, 블루투스 모듈 등 하유웨어 구성요소의 인터페이스를 여러 라이브러리 모듈로 구성함
    ● 프레임워크 API가 디바이스 하드웨어에 접근하기 위해 호출을 수행할 경우, 안드로이드 시스템이 해당 하드웨어               구성 요소에 대한 라이브러리 모듈을 로드함

 

○  Android 런타임

    ● Adroid 버전 5.0(API 레벨 21)이상을 실행하는 디바이스의 경우 각 앱이 자체 프로세스 내 자체 ARP 인스턴스 실행

    ● ART는 DEX 파일을 실행하여 저용량 메모리 디바이스에서 여러 가상머신을 실행하도록 함

    ● DEX 파일은 안드로이드용으로 특별히 설계된 바이트코드 형식으로, 최소 메모리 공간에 맞게 최적화 되어 있음

 

○ 네이티브 C/C++ 라이브러리

    ● C/C++로 작성된 라이브러리

    ● ART 및 HAL 등의 많은 핵심 Adroid 시스템 구성 요소와 서비스가 C/C++로 작성된 네이티브 라이브러리를 필요로

       하는 네이티브 코드 기반으로 이루어짐

    ● JAVA 프레임워크 API를 사용하여 일부 네이티브 라이브러리의 기능을 앱에서 사용하도록 함

 

○ Java API 프레임워크

    ● 안드로이드 운영체제의 전체 기능은 JAVA로 작성된 API를 통해 접근 가능

    ● 개발자는 안드뢰드 시스템 앱이 사용한느 것과 동일한 프레임워크 API에 대한 전체 접근 권한을 가짐

    ● 안드로이브 앱 제작에 필요한 뷰 시스템, 리소스 매니저, 알림 매니저, 액티비티 매니저, 콘텐츠 바이더와 같은

       앱 제작에 필요한 빌딩 블록을 구성할 수 있음

 

○ 시스템 앱

    ● 이메일, SMS 메시징, 캘린더, 인터넷 검색 주소록 등의 주요 어플리케이션이 제공됨

    ● 시스템 앱은 사용자를 위한 앱으로도 작동하고, 개발자가 자신의 앱에서 접근할 수 있는 주요 기능을 제공하기 위한

       용도록도 작동함

    ● 앱이 SMS 메시지를 제공하고자 할 경우 해당 기능을 직접 빌드할 필요가 없음

    ● 대신, 이미 설치된 SMS 앱을 호출하여 지정받는 사람에게 메시지를 제공할 수 있음

 

3. 안드로이드 4대 컴포넌트(구성요소)

○ 앱의 구성요서는 안드로이드 앱의 필수적인 구성 요소로 각 독리된 형태로 존재함

○ 각 구성 요소는 시스템이나 사용자가 앱에 들어올 수 있는 진입점을 의미

○ 특히 "인텐트"는 다른 애 컴포넌트로부터 작업을 요청하는 데 사용할 수 있는 메시징 객체

4대 컴포넌트

 

 

○ 액티비티 = UI라고 생각하면 편함

    ● 사용자와 상호작용 하기 위한 진입점

    ● 사용자 인터페이스를 포함한 화면 하나를 나타냄

    ● ex) 이메일 앱

        - 이메일 목록 액티비티(UI)

        - 이메일 작성 액티비티(UI)

        - 이메일 읽기 액티비티(UI) 등

    ● 이메일 앱에서 허용할 경우 다른 앱에서도 이메일 액티비티에 접근 가능

 

○ 서비스

    ● 백그라운드에서 앱을 실행하기 위한 다목적 진입점

    ● 사용자 인터페이스(UI)는 제공하지 않음

    ● 사용자가 다른 앱에 있는 동안 백그라운드에서 음악을 재생할 수 있음

    ● 사용자 액티비티 간의 상호작용을 차단하지 않고 네티워크를 통해 데이터를 가져올 수 있음

 

○ Broadcast Receiver

    ● 시스템이 정기적인 사용자 플로우 밖에서 이벤트를 앱에 전달하도록 지원하는 컴포넌트

    ● 대다수의 브로드캐스트는 시스템에서 발생

    ● 화면 깨짐, 배터리 부족, 사진 캡쳐 알림 등

    ● 일반 앱도 브로드캐스트를 사용해 사용자 인터페이스를 표시하진 않지만, 상태 표시줄 알림을 생성

 

○ 콘텐츠 프로바이더

    ● 콘텐츠 제공자는 파일 시스템, SQLite 데이터베이스, 웹상이나 앱이 접근할 수 있는 다른 모든 영구 저장소에

       저장 가능한 앱 데이터의 공유형 집합을 관리함

    ● 다른 앱은 컨텐츠 제공자를 통해 데이터를 쿼리하거나, 콘텐츠 제공ㄱ자가 허용할 경우에는 수정도 가능

    ● 안드로이드 시스템은 사용자의 연락처 정보를 관리하는 콘텐츠 제공자를 제공하여, 적절한 권한을 가진 앱일 경우

       콘텐츠 제공자를 쿼리하여 특정 인물에 대한 정보를 읽고 쓸 수 있음

 

4. 안드로이드 루팅의 이해

○ "모든 모안 기능과 마찬가지로 애플리케이션 샌드박스도 깨지지 않는다."

○ "제대로 구성된 장치에서 애플리케이션 샌드박스를 벗어나려면 리눅스 커널의 보안을 손상시켜야 한다."

○ 리눅스 기반 시스템의 root 권한은 모든 작업을 수행할 수 있는 최고 사용자 수준!

○ 안드로이드/리눅스에서는 소수 액심 유틸리티만 root 권한으로 실행됨

○ 하지만, 장치를 Rootting 하면 실행중인 모든 앱에서 root 권한으로 사용 가능

 

shell@android:/ $ su

root@android:/ $ id
uid=0(root) gid=0(root)

 

○ 루팅이란 안드로이드 운영 체제 상에서 최상위 권한을 얻어, 생상자 또는 판매자 측에서 걸어놓은 제약을 해제하는 행위

○ 루트 접근 권한을 얻어 디바이스를 완전히 제어하는 것이 루팅!

○ 루팅된 디바이스에서는 $가 아닌 #루트 쉘을 가진 uid 값 0이 존재함

 

 

'기반 지식 > Android' 카테고리의 다른 글

6. 모바일 취약점 진단 항목  (0) 2024.12.09
5. 녹스(Nox Player) 가상 애뮬 설치  (0) 2024.12.06
4. 안드로이드 앱 구조  (0) 2024.12.05
3. 안드로이드 디바이스 디렉터리 구조  (1) 2024.12.04
2. 안드로이드 앱 진단 환경의 이해 및 설치  (0) 2024.12.03
'기반 지식/Android' 카테고리의 다른 글
  • 5. 녹스(Nox Player) 가상 애뮬 설치
  • 4. 안드로이드 앱 구조
  • 3. 안드로이드 디바이스 디렉터리 구조
  • 2. 안드로이드 앱 진단 환경의 이해 및 설치
real-again
real-again
realagin 님의 블로그 입니다.
  • real-again
    또또, 다시
    real-again
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로젝트
        • AOS 모바일 앱 모의해킹
        • Spring Boot 웹 애플리케이션 구축
        • [ESXi]인프라 구축 및 모니터링
        • 인프라 취약점 진단 고도화
      • CVE 분석
      • 기반 지식
        • AWS
        • 인프라
        • 웹 어플리케이션
        • Android
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    하드코드
    sd스토리지
    tocken
    EC2
    Snort
    insecure authentication/authorization
    브로트캐스트
    spring boot
    vlan
    owasp mobile top10
    dvm
    diva
    pfsense
    통신 과정 취약점 진단
    aos정리
    android directory
    app intsructure
    콘텐츠 프로바이더
    AWS
    splunk #esm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
real-again
1. 안드로이드(Android)의 이해
상단으로

티스토리툴바