0Pricing
Ethical Hacking Academy · 강의

Android 앱 구조

APK 내부 구조

Android 앱 구조은(는) CoddyKit의 무료 Ethical Hacking Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ethical Hacking Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

APK 파일

Android 앱은 APK(Android Package) 형태로 배포됩니다. APK는 컴파일된 코드, 리소스, 메타데이터가 들어 있는 ZIP 아카이브입니다.

ZIP이므로 간단히 압축을 풀어 내부 내용을 확인할 수 있으며, 이것이 모바일 침투 테스트의 첫 단계입니다.

unzip app.apk -d app_extracted/

APK 내부

압축을 푼 APK에는 다음 항목이 들어 있습니다.

  • AndroidManifest.xml: 앱 설정입니다.
  • classes.dex: 컴파일된 바이트코드입니다.
  • res/ 및 resources.arsc: 리소스입니다.
  • lib/: 네이티브 라이브러리입니다.
  • META-INF/: 서명 정보입니다.

매니페스트

AndroidManifest.xml은 앱의 구성 요소, 권한, 설정을 선언합니다. APK 안에서는 도구가 디코딩할 수 있는 바이너리 XML 형식으로 저장됩니다.

앱의 공격 표면을 이해하는 데 가장 중요한 단일 파일입니다.

DEX와 런타임

Java/Kotlin 소스는 classes.dex에 들어 있는 DEX(Dalvik Executable) 바이트코드로 컴파일됩니다. 최신 Android는 ART(Android Runtime)를 통해 이를 실행합니다.

DEX는 읽을 수 있는 코드에 가깝게 변환할 수 있으며, APK 정적 분석은 바로 이 점을 활용합니다.

네 가지 구성 요소

Android 앱은 다음 네 가지 구성 요소 유형으로 구성됩니다.

  • 액티비티: 화면 및 사용자 인터페이스입니다.
  • 서비스: 백그라운드 작업입니다.
  • 브로드캐스트 수신자: 시스템 이벤트에 응답합니다.
  • 콘텐츠 제공자: 앱 간에 데이터를 공유합니다.

내보낸 구성 요소

android:exported="true"로 표시된 구성 요소는 다른 앱에서 호출할 수 있습니다. 이러한 구성 요소가 검사 없이 민감한 작업을 수행한다면 공격 표면이 됩니다.

침투 테스터는 데이터를 유출하거나 권한 있는 작업을 수행하는 내보낸 액티비티, 서비스, 제공자를 집중적으로 찾습니다.

<activity android:name=".AdminActivity" android:exported="true"/>

권한

앱은 매니페스트에서 권한을 요청합니다(예: INTERNET, READ_SMS, ACCESS_FINE_LOCATION).

지나치게 광범위한 권한은 위험한 동작이나 과도한 데이터 접근을 암시합니다. 사용자 지정 권한도 잘못 구성되면 권한 없는 접근을 허용할 수 있습니다.

<uses-permission android:name="android.permission.READ_SMS"/>

앱 샌드박스

Android는 각 앱을 고유한 Linux UID를 사용하는 자체 샌드박스로 격리합니다. 기본적으로 앱은 서로의 데이터를 읽을 수 없습니다.

앱이 이 경계를 약화하면 취약점이 발생합니다. 예를 들어 모든 사용자가 읽을 수 있는 파일이나 외부에 노출된 제공자가 이에 해당합니다.

앱 데이터 저장소

설치된 앱은 /data/data/<package>/ 아래에 개인 데이터를 저장합니다. 여기에는 데이터베이스, 공유 환경 설정, 파일이 포함됩니다.

침투 테스터는 루팅된 기기나 백업을 통해 이 디렉터리를 검사하여 안전하지 않게 저장된 비밀 정보를 찾습니다. 이에 대해서는 이후 레슨에서 자세히 다룹니다.

/data/data/com.example.app/

서명

모든 APK에는 디지털 서명이 있으며, 서명은 META-INF/에 저장됩니다. Android는 설치 및 업데이트 시 서명을 확인합니다.

앱을 수정하고 다시 패키징하면 다시 서명해야 합니다. 이것이 개발자가 변조를 탐지하기 위해 서명에 의존하는 이유입니다.

네이티브 라이브러리

성능에 중요한 로직이나 난독화된 로직은 C/C++로 컴파일된 네이티브 라이브러리(.so 파일)에 들어 있을 수 있으며, lib/ 아래에 저장됩니다.

이 코드는 DEX에 포함되지 않으므로 네이티브 디스어셈블러를 사용한 별도의 분석이 필요합니다. 개발자가 네이티브 코드는 검사하기 어렵다고 잘못 생각하여 이곳에 비밀 정보를 숨기는 경우도 있습니다.

lib/arm64-v8a/libnative.so

빠른 확인

어떤 매니페스트 속성이 구성 요소를 다른 앱에 노출하는지 떠올려 보십시오.

복습

이제 Android 앱의 구조를 이해하셨습니다.

  • APK는 AndroidManifest.xml, classes.dex, 리소스, 서명 데이터가 들어 있는 ZIP입니다.
  • 앱은 네 가지 구성 요소를 사용하며, 내보낸 구성 요소는 공격 표면이 됩니다.
  • 권한과 앱별 샌드박스가 접근을 제어하며, 개인 데이터는 /data/data/에 저장됩니다.
  • APK는 변조를 탐지할 수 있도록 서명됩니다.

다음에는 정적 분석에서 APK를 디컴파일합니다.

자주 묻는 질문

“Android 앱 구조” 강의는 무료인가요?

네 — “Android 앱 구조” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ethical Hacking Academy 강의 전체를 잠금 해제할 수 있습니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Android 앱 구조”에서 뭘 배우나요?

APK 내부 구조 브라우저에서 직접 실행하는 실습 코드로 Ethical Hacking Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Ethical Hacking Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Ethical Hacking Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Android 앱 구조” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Ethical Hacking Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Ethical Hacking Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Android 앱 구조
  2. APK 정적 분석
  3. Frida를 활용한 동적 분석
  4. 안전하지 않은 저장소와 통신
← Ethical Hacking Academy(으)로 돌아가기