일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 취약점
- .class
- 안드로이드란
- 프리다
- 네트워크
- Frida
- 불충분한인가
- 네트워크모델
- 프로세스검증누락
- 네트워크기초
- DVM
- OWASP TOP 10
- 웹쉘
- IP클래스
- ServerSideRequestForgery
- CSRF
- SSRF
- .dex
- apk
- 불충분한인증
- CrossSiteRequestForgery
- IPv6전환
- 안드로이드 구성요소
- CrossSiteScripting
- TCP/IP 4Layer
- 4대 구성요소
- .apk
- TCP/IP 4계층
- 안드로이드 구조
- OSI 7Layer
- Today
- Total
secure_world
안드로이드란? 본문
1. 안드로이드?
2. 안드로이드의 구조
3. 안드로이드의 구성 요소
1. 안드로이드?
- 안드로이드는 단순한 운영체제만을 뜻하는 것이 아닌, 리눅스 커널을 기반으로 제작된 운영체제와 미들웨어, 각 어플리케이션을 포함한 소프트웨어의 집합을 지칭하는 용어
- Java, Kotlin으로 어플리케이션 등의 응용 프로그램 개발이 가능하며, 안드로이드는 오픈 소스를 지향하고 있기 때문에 기본적으로 많은 정보가 공개되어 있어 적용 및 이식성이 좋음
2. 안드로이드의 구조
- 안드로이드의 구조는 오픈소스 소프트웨어 스택으로 이루어져 있음
- '스택'이란 무엇인가 쌓여있는 구조라는 의미를 가지고 있고, 안드로이드는 소프트웨어를 쌓아 놓은 공개된 구조를 가지고 있음
2.1. Application Area
1. System App
- 홈 화면, 주소록 등 기본적으로 제공되는 어플리케이션, 경우에 따라서는 눈에 보이지 않는 형태로 존재하기도 하며 스마트폰의 핵심 기능들을 User App에 제공하는 역할
2. User App
- 사용자용 어플리케이션으로 개발자들이 Java, Kotlin으로 어플리케이션을 만들고 플레이 스토어등을 통해서 설치할 수 있는 응용 프로그램을 말함
2.2. Java API Framework
- Android Framework라고도 불리며 모든 안드로이드 어플리케이션들이 사용하는 Toolkit을 말함
- User App개발에 사용할 수 있는 Java API, 안드로이드 버전에 따라서 지원되는 API가 다르기 때문에 호환성 제공에 신경을 써야함
- API란 Application Programming Interface를 말하며 컴퓨터나 컴퓨터 프로그램 사이의 연결을 말함
2.3. Native Library, Android Runtime
1. Android Runtime
- 안드로이드는 가상머신을 사용하는 Java언어로 응용프로그램을 개발하도록 설계되어있음
- 서로 다른 하드웨어에서 동일 프로그램이 실행될 수 있도록 보장하지만 JVM(Java Virtual Machine)을 사용하면 문제가 발생할 수 있기 때문에 ART(Android Runtime)을 사용하게 됨
2. Native Library
- Android Runtime을 통해 실행되는 프로그램들이 안드로이드 하드웨어 장치들을 사용할 수 있도록 해주는 C/C++ 라이브러리
- NDK(Native Development Kit)을 통해 구현됨
2.4. HAL(Hardware Abstraction Layer)
- 하드웨어 추상화 영역
- 서로 다른 안드로이드 스마트폰 제조사들의 하드웨어를 동일 방식으로 접근할 수 있도록 제공하는 호환 인터페이스 레이어를 말함
2.5. Linux Kernel
- 운영체제의 핵심 영역(=커널)
- 스레드, 전원 관리, 보안 등의 스마트폰을 기본적으로 구동하고 사용할 수 있도록 만들어주는 영역
3. 안드로이드 구성 요소
- 안드로이드의 구성 요소는 액티비티, 프레그먼트, 브로드캐스트 리시버, 서비스, 콘텐츠 프로바이더, 노티피케이션, 인텐트, 인텐트 필터 등으로 구성되어 있음
- 4대 구성요로소 불리는 액티비티, 서비스, 콘텐츠 프로바이더, 브로드캐스트 리시버가 있으며, 인텐트를 거쳐 다른 구성요소를 호출할 수 있음
3.1. 안드로이드의 4대 구성요소
1. Activity
- 사용자와 앱이 상호작용하기 위한 진입점으로 생각하면 됨
- UI화면을 담당하는 요소로 자바소스에서 Activity클래스를 상속해야하며, Activity를 기본적으로 가지고 생명주기 메소드를 재정의하여 원하는 기능을 구현하는 방식으로 되어있음
- 각각의 Activity는 독립되어 있음
- 특징
1. 안드로이드 어플리케이션은 반드시 하나 이상의 액티비티를 가지고 있어야함
2. 두 개의 액티비티를 동시에 Display할 수 없음
3. 다른 어플리케이션의 액티비티도 불러낼 수 있음
4. 액티비티 내 프레그먼트를 추가하여 화면을 분할할 수 있음
2. Service
- 여러가지 이유로 어플리케이션을 백그라운드 상태에서 계속 실행시키기 위한 다목적 진입점으로 생각
- 서비스는 백그라운드에서 실행되는 프로세스를 의미하며, 어플리케이션의 구성 요소이므로 새로 만든 후에는 항상 Manifest에 등록해주어야하고, 제공되는 화면은 따로 존재하지 않음
- 특징
1. 화면이 없고 백그라운드 구성 요소
2. 시작된 서비스는 어플리케이션이 종료되어도 백그라운드에서 실행되고 있음
3. 모든 서비스는 서비스 클래스를 상속받아 사용
4. 네트워크를 통해 데이터를 가져올 수 있음
3. Content Provider
- 콘텐츠 프로바이더는 데이터를 관리하고 다른 어플리케이션 데이터를 제공해주는 역할을 하며, 데이터 베이스의 데이터를 전달할 때 많이 사용됨
- 특징
1. 파일 입출력, SQLite DB 등을 통해 데이터를 관리
2. 콘텐츠 프로바이더를 통해 다른 어플리케이션의 데이터도 변경이 가능함
4. Broadcast Receiver
- 사용자가 만드는 플로우 밖에서 Android 시스템이 어플리케이션에 알려야하는 사건이 생길 때, 이벤트를 통해 어플리케이션에 전달함으로써 어플리케이션에 진입할 수 있는 진입점
- 브로드캐스트 리시버란 안드로이드에서 다양한 이벤트와 정보를 받아 반응하는 구성 요소, 메세지를 여러 객체에 전달하는 방법을 의미
- 특징
1. 디바이스에서 발생되는 일 중, 어플리케이션이 알아야하는 상황이 발생하면 메세지를 전송
2. 수신기를 통해 디바이스의 상황을 감지하고 적절한 작업을 수행
3. 대부분 UI가 존재하지 않음
'모바일 > 안드로이드' 카테고리의 다른 글
안드로이드 - JVM&DVM / APK파일의 구조 (0) | 2022.01.03 |
---|