Compiile이란?
Decompile을 알기전에 먼저 Compile에 대하여 알아보자.
컴퓨터는 0과 1로만 모든 명령을 이해하고 실행하기 때문에, 우리가 작성한 문자를 해석하지 못한다.
따라서 우리가 작성한 문자를 컴퓨터가 이해할 수 있는 언어로 바꿔줘야한다.
Compile은 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꾸어주는 과정이다.
이때 사용하는 용어가 "원시코드"와 "목적코드"이다.
"원시코드"는 우리가 작성한 코드이고, "목적코드"는 컴퓨터가 이해할 수 있도록 번역한 코드이다..
Decompile이란?
Decompile이란 Compile과는 반대로, Compile된 실행 파일을 소스코드로 되돌리는 작업이다.
Compile에서 "원시코드"를 컴퓨터가 해석할 수 있게 "목적코드"로 변경하였다면,
Decompile은 우리가 읽을 수 있는 언어로 변환해주는 과정이다.
다른 말로는 Reverse Engineering이라고도 불린다.
Apk Decompile이란?
위에 설명한 Decompile을 Apk파일에 적용할 수 있다.
앞전 포스트에서 설명한 "Apktool"과 "dex2jar"을 이용하면 된다.
Apk Decompile은 크게 2가지로 나눌 수 있다.
1. 내부 파일을 확인만 할 경우
내부 파일만 확인할 경우 Apk파일을 jar파일로 변환하여 jar파일을 보면 된다.
2. 파일을 수정하고 앱을 재빌드 하는 경우
파일을 수정하는 경우는 Apk파일을 압축을 풀어 그 안에 있는 dex파일을 jar파일로 변환하고
변환된 jar파일을 수정하고 다시 Apk파일을 재빌드하면 된다.
Apk가 디컴파일이 가능한 이유
Apk는 압출파일로 이루어져 있기 때문에 앞에 설명했던 Apktool이라는 도구를 이용하여 압출을 해제하고
해제된 파일 즉, Dex파일을 다시 jar파일로 변환하여 수정이 가능하다.
한마디로 Apk도 결국 압축해제 가능하기 때문에 디컴파일이 가능하다.
'안드로이드 보안 > 이론' 카테고리의 다른 글
[Android] 안드로이드에서 사용하는 Java (0) | 2023.03.11 |
---|---|
[Android] JNI(Java Native Interface)란? (0) | 2023.03.09 |
[Android] Apktool이란? (0) | 2023.03.09 |
[Android] 안드로이드의 4대 구성요소란? (0) | 2023.03.09 |
[Android] 안드로이드란? (0) | 2023.03.09 |