우리가 흔히 핸드폰에서 앱을 사용할때 여러가지 파일을 액세스를 하며 앱을 실행한다
그러기에 우리가 핸드폰을 해킹하기 위해선 앱의 컴포넌트를 알아야한다 그러기에 먼저 컴포넌트 라는 것을 알아야하는데
컴포넌트란 여러개의 프로그램 함수들을 모아 특정한 기능을 수행 할 수 있도록 구성한 작은 기능적 단위이다
그리고 안드로이드의 컴포넌트를 알고 있어야 한다
안드로이드의 컴포넌트는
액티비티(Activities), 서비스(Services), 브로드캐스트 리시버(BroadcastReceiver),콘텐츠 프로비버스(Content providers)
로 구성 되어 있다 하나 하나 알아 보자
먼저 컴포넌트의 생명주기이다 앱이 어떻게 실행되면서 어떻게 끝나는지 보여주는 과정이다
아래의 그림을 본다면 이해하기 편할 것이다
여기서 여러 함수가 나오는데 하나하나 다 설명하자면
onCreate() : Activity가 처음 생성될 때 실행되는 것으로, 필수적으로 구현해야 함
onStart(): Activity가 사용자에게 보이게 됨 생명 주기 동안 두 번 이상 호출 가능
onResume(): 사용자 입력을 받을 수 있는 상태로, 사용자와 상호작용을 함
onPause():Activity를 떠나는 첫 번째 신호 특정 액션으로 다른 액티비티가 호출되는 경우 해당 상태로 돌입함
onStop():Activity가 사용자에게 더 이상 표시되지 않으면 중단됨 상태 다른 액티비티로 전환되면 해당 상태가 됨 다시 돌아오게되면 onRestart와 onStart 두 개의 콜백함수가 호출된 다음에 onResume 상태로 돌아감
onRestart(): 액티비티가 onStop()된 후, 다시 시작되기 직전에 호출 항상 onStart()가 그 다음으로 실행
onDestroy() : Activity가 소멸(파괴)되기 전에 호출 사용자가 Activity를 완전히 닫거나 Activity에서 finish()가 호출
여러 함수들이 순환하거나 끝나기도 한다
Activities(안드로이드 컴포넌트)
액티비티란 우리가 흔히 인스타를 보거나 유튜브를 볼 때에 화면을 구현하는 UI를 담당하는 컴포넌트다
액티비티가 없으면 우린 앱을 이용하기 쉽지 않을 것이다
액티비트의 예:
우리가 보고 있는 것이 액티비티라는 컴포넌트가 만들어낸 화면이다
그리고 이것은 다른 예시 코드다
매니페스트 파일
매니페스트 파일이란 안드로이드 시스템이 앱 컴포넌트를 시작하려면 우선 앱의 매니페스트 파일을 읽어서 컴포넌트를 선언하는 것 한 마디로 컴포넌트가 있어야 하기 위해 있어야 하는 파일이다 확장자는 .xml이다
매니 페스트 파일의 역할은 앱에서 요구하는 API 레벨을 선언하거나 앱이 요구하는 사용자 권한을 식별하며 스프트웨어 기능을 선언, 앱이 연동 되어야 하는 API라이브러리를 선언하는 등 여러 역할을 맡는다 그 안에는 액티비트, 서비스, 콘텐츠 등 여러 코드가 들어 있는 파일이다
서비스(Services)
서비스는 UI가 없는 액티비티하고는 반대되는 개념이다
다시 말하자면 백엔드 코드 같은 것이다 다른 앱에 있는 동안 백그라운드에서 음악을 재생하거나 다른 액티비티 간의
상호작용을 하는 등 여러 일을 할 수 있는 컴포넌트다
필수적으로 application태그가 필요하다
그리고 서비스 유형은 3가지가 있다
포그라운드
사용자에게 잘 보이는 작업을 수행함
EX): 동영상 재생 등
백그라운드
사용자에게 직접 보이지 않는 작업을 수행함
EX): 음악 앱의 자동 재생 기능
바인드
앱 구성 요서가 bindService()를 호출하여 해당 서비스에 바인딩 되면 서비스가 바인딩 됨
바인딩 된 서비스는 클라이언트-서버 인터페이스를 제공하여 구성 요소가 서비스와 상호작용하게 하며, 결과를 받을 수도 있고 프로세스 간으로 통신 역할을 수행 가능
브로드캐스트 리시버
시스템이 정기적인 사용자 플로우 밖에서 이벤트를 앱에 전달하도록 지원하는 컴포넌트
"방송" 이거라고 생각하면 된다
콘텐츠 제공자
앱이 접근할 수 있는 다른 모든 영구 저장소에 저장 가능한 앱 데이터의 공유형 집합을 관리
apk파일에서 자체적으로 저장된 데이터, 다른 앱이 저장한 데이터에 대한 액세스 권한을 관하도록 돕고, 다른 앱과 데이터를 공유할 방법을 제공
콘텐츠 제공자를 선언하려면 <provider> 요소를 <application> 요소의 하위로 선언
android:name 콘텐츠 제공자를 구현하는 클래스이자 ContentProvider의 서브클래스의 이름 정규화된 클래스 이름 또는 약식으로 이름의 첫 번째 문자가 마침표로 표현 가능
android:authorities 콘텐츠 제공자에서 제공되는 데이터를 식별하는 URI 권한을 하나 이상 보여주는 목록 권한이 여러 개이면 이름을 세미콜론으로 구분하여 나열 충돌 방지를 위해 자바 스타일의 이름 지정 규칙을 사용함
android:exported 다른 애플리케이션에서 콘텐츠 제공자를 사용할 수 있는지 여부 true: 다른 애플리케이션에서 제공자 사용 가능 false: 다른 애플리케이션에서 제공자 사용 불가 API 레벨 17 이상부터 기본 값이 false로 설정됨
'모바일' 카테고리의 다른 글
[NOOBHACK] apk파일 리패키징 하는 방법 (0) | 2023.09.25 |
---|---|
[NOOBHACK] APK 파일 분석하는 방법 (0) | 2022.10.07 |
[NOOBHACK] apk 파일 이란? (1) | 2022.10.07 |
[NOOBHACK] 안드로이드란? (0) | 2022.10.04 |