본문 바로가기
안드로이드 해킹

APK 파일 디컴파일하기

by L3m0n S0ju 2021. 7. 24.

안드로이드 APK 파일 디컴파일 과정은 아래와 같습니다.

 

APK 파일 -> dex+리소스+권한 -> smali -> class -> Java 파일 

 

APK 파일에서 바로 Java 파일로 디컴파일도 가능하지만 smali 코드를 수정하는 것이 더 쉬운 경우가 많기 때문에 여러가지 디컴파일에 대해서 알아보겠습니다.

 


첫번째로 smali 코드로 디코딩하는법에 대해서 알아보겠습니다.

 

APK 파일은 압축파일입니다. APK 파일의 확장자를 zip으로 변경하고 압축을 해제하면 위와 같은 파일들로 분해됩니다. 핵심 코드는 dex 파일입니다.


 

dex 파일을 smali 파일로 디코딩하는 방법은 apktool 디코딩 도구를 사용하는 방법이 있습니다. 위와 같이 툴을 사용하면 dex 파일이 smali 코드로 디코딩됩니다.

 

 

 


 

원래 dex 파일 위치에 smali 파일이 있습니다.

 

smali 파일 내부로 들어가면 여러가지 함수 모듈이 smali 코드로 저장되어있습니다.

 


 

두번째로 class 파일로 디컴파일하는법에 대해서 알아보겠습니다. 이번에 사용할 도구는 dex2jar-2.0입니다. 해당 도구를 설치한 후 아래와 같이 apk를 지정하여 jar파일을 생성하고 압축을 풀어줍니다.

 

 

 

이후 com\android 디렉터리로 들어가 보면 class 파일이 생성된 것을 확인할 수 있습니다. 

 


마지막으로 APK 파일에서 바로 Java 파일로 디컴파일하는 방법에 대해서 알아보겠습니다. 아래 도구는 jadx-gui라는 도구입니다. 하지만 jadx-gui로 분석할 때 부분적으로 디컴파일이 안되어 글자가 깨지는 부분이 있을 수 있습니다. 해당 문제점은 아래 Bytecode_Viewer 툴을 이용해 더 자세하고 정확하게 분석할 수 있습니다.

 

 

 


 

물론 jadx-gui 툴의 장점도 있다. 바로 Text Search 기능이 Bytecode_Viewer에 비해 편리하다는 것이다. 아래와 같이 root를 검색하면 해당 문자열의 위치를 알기 쉽게 디자인되었다.


다음은 Bytecode_Viewer 도구입니다. 해당 툴은 jadx-gui에 비해 파일을 분석하는데 시간이 더 오래 걸리지만 그만큼 더 정확하고 자세히 분석합니다. 따라서 jadx-gui로 디컴파일이 실패했다면 Bytecode_Viewer로 시도해볼 수 있습니다. 하지만 Bytecode_Viewer도 분석에 실패한다면 smali 코드를 분석해야합니다.

 


 

지금까지 APK 파일 분석 방법에 대해서 알아보았습니다.

'안드로이드 해킹' 카테고리의 다른 글

diva.apk 취약점 분석 (3)  (0) 2021.07.24
diva.apk 취약점 분석 (1)~(2)  (0) 2021.07.24
안드로이드 내부/외부 저장소  (0) 2021.07.24
미래 IoT시대 보안  (0) 2021.07.24

댓글