프로그래밍/android

[android] apk decompile (안드로이드 apk 디컴파일)

-샤리- 2021. 11. 30. 22:42

신규 프로젝트를 진행한 뒤, 난독화가 잘 되었는지 확인하기 위해서 디컴파일을 진행해 보았다.  디컴파일은 평소에 자주 하는게 아니기 때문에 정리차원에서 포스팅을 해두자.

 

apktool을 이용하여 디컴파일을 하는 방법도 있지만, 나는 오래전에 사용해 보았던 dex2jar를 이용하여 간단하게 디컴파일을 할 것이다.

 

1. 먼저 아래 링크에서 dex2jar를 다운 받는다.

https://sourceforge.net/projects/dex2jar/

 

dex2jar

Download dex2jar for free. Tools to work with android .dex and java .class files. Mirrors: * https://bitbucket.org/pxb1988/dex2jar * https://github.com/pxb1988/dex2jar dex2jar contains following compment * dex-reader is designed to read the Dalvik Executab

sourceforge.net

 

2. 다운받은 dex2jar를 압축 풀고, 디컴파일을 하고 싶은 apk 파일을 이 폴더안에 넣는다.

 

3. 터미널을 이용하여 dex2jar 폴더로 이동하여 아래와 같이 명령어를 입력한다. (apk 파일이 jar로 변환되어 하나 생성되었을 것이다)

$  sh ./d2j-dex2jar.sh your_test.apk

 

4. 혹시라도 권한 오류가 발생했다면 chmod 명령어로 권한을 부여하면 된다.

$ sudo chmod +x d2j_invoke.sh

 

5. jar로 변환된 파일을 GUI로 볼 수 있도록 JD-gui를 다운 받는다.

http://java-decompiler.github.io/#jd-gui-download

 

Java Decompiler

The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions. JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reco

java-decompiler.github.io

 

6. 압축을 풀고 실행하면 되는데, 이전에는 보이지 않던 오류 메시지가 뜨더라.

No suitable Java version found on your system!
This program requires Java 1.8+.
Make sure you install the required Java version.

 

7. 위 오류를 해결하기 위해서는

  • JD-GUI 실행파일에서 우클릭 후, 패키지 내용보기를 선택
  • Contents/MacOS/universalJavaApplicationStub.sh 파일을 열고
  • export JAVA_HOME=$(/usr/libexec/java_home -v1.8) 을 입력

 

8. 이렇게 설정이 끝났으면 다시 JD-gui 앱을 열고, 3번에서 만들어진 jar 파일을 불러오면 패키지별 트리 형태로 클래스와 소스 내용이 디컴파일 되어 읽을 수 있을 것이다.