안드로이드 앱은 java 기반이다. java로 개발하면 윈도우, 맥 등 운영체제 종류에 상관 없이 실행 가능하다는 이점이 있다.
JVM
- 데스크탑 환경
- "자바 바이트 코드"를 실행하기 위한 자바 가상머신
- "자바 바이트 코드"는 JVM이 이해할 수 있는 언어로 JVM만 설치되어 있으면 운영체제 종류에 상관 없이 실행 가능
DVM
- 모바일 환경
- "안드로이드 애플리케이션"을 실행하기 위한 달빅 가상머신
- 모바일 디바이스 환경에 최적화 되어 개발되어 낮은 메모리에서 실행되도록 설계됨
- DEX 컴파일러가 class 파일을 dex 파일로 변경하여 DVM에서 실행 가능하게 한다.
ART
- 모바일 환경
- 안드로이드 애플리케이션 런타임 환경
- 퍼포먼스 개선을 위해 구글이 DVM에서 ART로 변경
- 요샌 거의 ART를 씀
정리하면 이렇다
- 데스크탑에서는 JAVA -> class(자바의 바이트 코드) -> JVM에서 실행
- 모바일에서는 JAVA -> class -> dex -> ART (혹은 DVM)에서 실행
안드로이드 앱 구조
- 안드로이드 앱 확장자는 apk로 다양한 파일과 폴더의 압축이다.
- AndroidManifest.xml : 앱에 대한 세부 정보가 포함된 파일
- classes.dex : 개발자가 작성한 소스코드(java)에서 생성된 바이트 코드
- resources.arsc : 컴파일된 리소스가 포함됨
- res : resources.ars에서 제외된 정보를 포함하는 디렉터리로 리소스가 포함됨
- META-INF : 매니패스트 파일과 애플리케이션 인증서 등이 포함됨
- assets : 개발자는 이 폴더를 사용하여 음악, 비디오 등 파일을 저장함
참고
'모바일 앱 해킹' 카테고리의 다른 글
[DIVA] Insecure Logging(안전하지 않은 로깅) | 안드로이드 앱 취약점 실습, DIVA란? (0) | 2024.05.18 |
---|---|
취약한 로깅 메커니즘 | 안드로이드 앱 해킹, 인시큐어뱅크 실습 (0) | 2024.05.16 |
로컬 암호화 이슈 | 안드로이드 앱 해킹, 인시큐어뱅크 실습 (0) | 2024.05.12 |
모바일 앱 해킹 이걸 해봐라 | 모바일 앱 개발, Frida, DIVA (0) | 2024.05.10 |
모바일 앱 해킹 방향잡기 | 모바일 앱 해킹을 해야하는 이유, 취약점 구분 (0) | 2024.05.09 |