안드로이드란?(Android) ■ 안드로이드란 Android는 주로 스마트폰 및 태블릿과 같은 터치스크린 모바일 장치용으로 설계된 Linux 커널 및 기타 오픈 소스 소프트웨어의 수정된 버전을 기반으로 하는 모바일 운영체제이며, Open Handset Alliance로 알려진 개발자 컨소시엄에서 개발하고 구글에서 상업적으로 후원중. 안드로이드 기기의 아키텍처, 애플리케이션이 어떻게 컴파일되는지, 가장 중요한 것은 안드로이드 애플리케이션의 구성을 이해하는 것 ■ 안드로이드의 구성 하드웨어 Android의 주요 하드웨어 플랫폼은 이후 릴리스에서도 지원되는 x86 및 x86-64 아키텍처가 있는 ARM Android 5.0 Lollipop부터 32비트 변형 외에도 모든 플랫폼의 64비트 변형이 지원됨 커널 A..
모바일 어플리케이션 디컴파일하기 ■ 디컴파일 개요 Android Manifest 앱에 필수로 들어가야되며, 앱에 대한 필수적인 정보를 담고 있음. 특히, 앱의 패키지 이름과 사용되는 컴포넌트 및 권한 등이 전부 담겨 있음 DEX 안드로이드 환경에서의 실행 파일 Java 코드로 작성된 컴파일된 class 파일을 DX 도구를 사용해 변환시킨 파일 - Java 바이트 코드가 달빅 다이트 코드로 변환 달빅 가상머신에서 구동 - 실행되는 앱마다 가상머신을 생성해 구동시킴 SMALI DEX 바이너리를 사람이 읽을 수 있도록 표현. DEX를 디코딩 작업으로 추출할 수 있음. Smali 파일의 코드를 분석해 프로그램의 실행 원리 파악 가능 Smali 코드를 읽고, 수정 후 재컴파일해서 프로그램 수정 가능 (조작하면 동..