[Android] 안드로이드 apk 디컴파일

[Android] 안드로이드 apk 디컴파일

안드로이드 apk 확장자 파일을 디컴파일하는 방법이다.

1. jd-gui 다운로드 및 압축 해제

우선 jd-gui 프로그램을 준비해야 한다.

jd-gui는 자바로 만들어진 jar 파일을 디컴파일해서 볼 수 있는 프로그램이다.

다운로드 받아서 적당한 위치에 압축 해제 해두면 된다.

본 포스트에 첨부된 jd-gui-windows-1.6.3.zip 파일을 다운로드 받자.

또는 https://github.com/java-decompiler/jd-gui/releases 주소에 접속해서 가장 최신 버전의 jd-gui-windows-[버전].zip 파일을 다운로드 받자.

2. dex2jar 다운로드 및 압축 해제

2-1. dex2jar-2.0.zip 파일 다운로드

첨부된 dex2jar-2.0.zip 파일을 다운로드한다. 또는 아래 사이트에서 다운로드한다.

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

2-2. 특정위치에 압축 해제

기억하기 쉬운 위치에 압축 해제한다. 필자는 C:\dex2jar-2.0 위치에 압축해제하였다.

3. apk 파일을 디컴파일한 jar파일 얻기 (apk 파일 -> jar 파일)

3-1. apk 파일을 준비한다. (ex : android_test.apk)

3-2. apk 파일의 확장자를 zip 으로 변경한다. (ex : android_test.zip)

3-3. 압축을 해제한다. classes.dex 파일이 들어있는 것을 확인할 수 있다.


 

3-4. cmd 에서 cd 명령어로 classes.dex 파일이 존재하는 위치로 이동한다.

(ex : cd C:\test\android_test)

[특정위치]\d2j-dex2jar.bat classes.dex 명령어를 실행한다.

(ex: C:\dex2jar-2.0\d2j-dex2jar.bat classes.dex)

3-5. classes-dex2jar.jar 파일이 생성된 것을 볼 수 있다. 이제 이 jar 파일을 jd-gui로 열어보면 된다.

(만약 apk 파일을 ProGuard 로 난독화한 경우, jar 파일을 열었을 때 난독화된 코드가 보일 것이다.)

4. ProGuard 난독화 해제한 jar 파일 얻기 (jar 파일 -> 난독화 해제한 jar 파일)

ProGuard 로 난독화한 apk 파일의 경우, 해당 apk 파일을 컴파일 할 때 사용했던 proguard.cfg 파일이 있으면 난독화 해제 가능하다.

쉽게 말해 아예 남이 만든 apk 파일이라면 proguard.cfg 파일이 없으므로 난독화 해제가 불가능하다.

본인 프로젝트 또는 회사 프로젝트라면 컴퓨터를 잘 뒤져서 proguard.cfg 파일을 찾아내도록 하자.

4-1. 첨부된 mapping.jar 다운로드

* 본 프로그램의 개발자 분은 Michael Brunner(GraxCode) https://github.com/GraxCode/AntiSmokeObfuscator 이며, 실행 가능한 jar 파일은 블로그 주소 https://ddmanager.tistory.com/25 에서 가져왔다. 이 자리를 빌어 감사드린다.

4-2. mapping.jar 파일을 특정 위치로 이동

나중에 난독화 해제된 jar파일이 떨어지게 되므로 기억하기 쉬운 위치로 지정하자.

필자는 C:\test\mapping 에 mapping.jar 파일이 위치하도록 했다.

4-3. mapping.jar 파일 실행

(1) cmd 실행

(2) mapping.jar 파일이 위치한 폴더로 이동 (cd C:\test\mapping)

(3) 자바로 mapping.jar 실행 (ex : java -jar mapping.jar)

4-4. ProGuard 난독화 해제

(1) [Load Jar] 버튼을 클릭하여 classes-dex2jar.jar 파일 위치를 지정한다. (ex : C:\test\android_test\classes-dex2jar.jar)

(2) [Load Mappings] 버튼을 클릭하여 proguard.cfg 파일 위치를 지정한다. (ex : C:\test\proguard.cfg)

(3) 콤보박스는 Proguard 를 선택

(4) [Reverse] 버튼 클릭

[Saved modified file!] 이라는 문구가 나오면 cmd가 가르키는 위치 (ex : C:\test\mapping) 로 가보자.

4-5. 난독화 해제된 jar 파일 얻기

classes-dex2jar.jar.correlated.jar 파일이 생성되었다. 난독화 해제된 jar 파일이며 jd-gui 에서 열어보면 된다.

참고사이트) https://ddmanager.tistory.com/25