Check Vulnerability/Mobile

안드로이드의 소스파일, 목적파일, 실행파일

D4tai1 2019. 4. 1.

1. 안드로이드의 파일

▶ 파일확장자에 대한 소스파일, 목적파일, 실행파일

 

(1) .java

 [1] 자바로 프로그램을 작성한 경우 .java라는 확장자를 가진 소스파일이 생성된다.

 [2] 결국 프로그래머가 작성하는 소스라고 생각하면 된다.

 [3] javac 컴파일러를 사용해서 컴파일한다.

 

(2) .class

 [1] .class 파일은 자바의 중간코드이다.

 [2] .java 파일을 컴파일한 바이트코드를 말하며 실행파일은 아니다.

 [3] C로 예를 들면 컴파일후 오브젝트파일이 생성되지만 이 파일이 실행파일이 아닌 것과 동일하게 생각해도 좋다.

 

(3) .jar

 [1] 하나의 소스파일에 모든 명령을 작성할 수 없으므로 .class파일의 묶음 정도로 생각하면 된다.

 [2] .class를 모아놓았기 때문에 .dex와 비슷하다.

 [3] 윈도우즈의 dll과 비슷하게 생각하면 이해가 쉬울 것이다.

 [4] 리눅스의 .tar는 압축률이 거의 없지만 주로 관련있는 파일을 묶어놓는다.

 [5] .jar도 [4]와 같이 생각해도 좋다.

 

 

(4) .dex

 [1] exe, elf, mach-o와 비슷한 안드로이드 실행파일이다.

 [2] .class를 묶어 놓은 후 앞에 헤더가 추가된 상태이다.

 [3] 오브젝트파일에 PE헤더나 ELF헤더와 같이 OS에 따라 필요한 헤더정보가 추가된 상태이다.

 

(5) .apk

 [1] .dex와 .xml을 하나로 zip 압축한 것이 .apk이다.

 [2] .xml은 configuration 파일이다. 즉, 외부의 리소스 및 데이터를 저장하는 것으로 생각하면 된다.

 [3] 윈도우즈는 파일을 개별적으로 다루지만, 안드로이드는 OSX의 .app과 같이 단순한 파일 하나가 아닌 폴더 째로 압축한 상태가 .apk이다.

  + WebAPP도 publishing(공개)할 때 압축한 후 tomcat에 설치한다.

 [4] 결국은 압축파일이라는 소리인데 실행할 때는..?

  ▶ 원리는 패킹한 것을 언패킹하는 것과 비슷하다고 생각하면 된다.

  ▶ 실행하면 OS가 런칭하기 전 임시파일을 만들고 메모리에 올릴 수도 있지만 아마도 로더가 압축을 풀어서 메모리에 올리고 재배치 및 재구성한다.

 [5] smali 코드는 자바의 어셈블러를 말한다.

  + 윈도우즈에서 exe의 기계어를 어셈블러라고 부르고, 안드로이드에서 dex의 기계어를 smali라고 부른다.

 

※ [java -jar 파일이름]과 같이 사용할 경우 런타임.. 즉 실행

[javac] 은 컴파일

 

 

+ 다음내용 컴파일러, 디컴파일러, 덱스, 언덱스에 대한 설명

 

 

'Check Vulnerability > Mobile' 카테고리의 다른 글

Application 취약점[브로드캐스트]  (0) 2019.04.08

댓글