메뉴 건너뛰기

imitator

어느 프로젝트를 위해 자료를 찾던 도중에 안드로이드의 앱의 내용이 궁금하여 디컴파일하는 방법을 찾아봤습니다.

다행스럽게도 리눅스에서 간단하게 사용할수 있는 툴이 있어 크게 문제는 없었는데요.

이 글에서는 apk를 디컴파일하는 방법에 관해 정리하고자 합니다.


실험 PC 2대 (리얼 1대 가상 1대)

OS 1 : Ubuntu 16.04 데스크탑 64bit

OS 2 : CentOS 6.9 64bit


미리 설치해야할 부분

unzip : zip파일의 압축해제를 위해 설치합니다. 

java : apk를 jar파일로 변환하기위해 설치합니다.

#설치 명령어

yum install unzip java


dex2jar 설치


1.png


apk 파일을 jar 파일로 디컴파일해주는 dex2jar를 wget으로 다운로드 받습니다.

예제로 준비한 apk 파일은 1.0.apk 입니다.  


# /src로 이동

cd /usr/local/src


# dex2jar-2.0.zip 다운로드

wget https://downloads.sourceforge.net/project/dex2jar/dex2jar-2.0.zip


2.png  


dex2jar-2.0.zip의 압축을 해제하기위해서는 unzip가 필요합니다. unzip로 압축을 해제한 후

dex2jar-2.0의 퍼미션을 755로 맞춰줍니다.


# zip 파일 압축해제

unzip dex2jar-2.0.zip


# 퍼미션 755로 변경

chmod 755 -R dex2jar-2.0


3.png


dex2jar-2.0 디렉토리로 이동하여 d2j-dex2jar.sh 스크립트를 통해 apk 파일을 jar 파일로 디컴파일합니다.

디컴파일한 파일은 apk의 이름-dex2jar.jar이라는 이름으로 설정됩니다.


# 디렉토리 이동

cd dex2jar-2.0


# apk 파일 디컴파일

sh   디컴파일 스크립트         디컴파일할 apk 파일

sh d2j-dex2jar.sh -f /usr/local/src/1.0.apk


JD-GUI로 디컴파일 한 jar 내부의 소스 확인


4.png


디컴파일한 파일은 JD-GUI를 통해 열면 소스를 확인할수 있습니다. apk에 따라 이렇게 소스가 잘나오는

경우가 있고 그렇지 않은 경우도 존재하니 참고해보시면 좋을것같습니다.

번호 제목 글쓴이 날짜 조회 수
101 우분투 16.04 데스크탑에서 카카오톡 PC버전 설치하기 [32] file 관리자 2016.08.02 49743
100 서버의 ssh 접근이 안될때 확인하는 방법 file 관리자 2016.09.27 26845
99 리눅스 패스워드 변경기록 확인방법 관리자 2015.02.11 26149
98 우분투 16.04 LTS apt-get으로 APM 설치하기 [4] file 관리자 2016.05.10 24827
97 CentOS 7 싱글모드로 부팅해서 패스워드 변경하기 [5] file 관리자 2015.11.27 21522
96 우분투(Ubuntu)에서 putty로 ssh 원격 접속 실패 해결 방법 [10] file 관리자 2016.04.24 18483
95 -bash: /usr/bin/su: 허가 거부 해결방법 관리자 2016.04.18 17378
94 time.bora.net으로 rdate가 먹지 않는경우 file 관리자 2016.02.17 15085
93 리눅스 용량 정리후 df로 확인할때 실제용량이 줄어들지 않는경우 관리자 2016.05.07 13066
92 dmesg를 실시간으로 보기 [1] file 관리자 2015.08.21 10936
91 리눅스 CPU 온도 체크 lm_sensors [1] file 관리자 2015.05.28 10676
90 Ubuntu 18.04 Unable to locate package 에러 해결 방법 [1] file 관리자 2019.01.24 10563
89 CentOS 멀티 IP 설정 방법 [5] file 관리자 2015.03.06 9065
88 let’s Encrypt SSL 무료 인증서 certbot을 통해 설치 및 설정하는 방법 file 관리자 2017.04.13 7622
87 CentOS 6.8 네트워크 간혈적으로 끊김 현상 해결 방법 [1] file 관리자 2017.02.20 7555
86 LVM2_member mount(마운트) 불가 해결하는 방법 file 관리자 2016.08.26 6702
85 클램(ClamAV) 안티바이러스 설치하기 (CentOS 6.6) file 관리자 2016.06.30 6595
84 CentOS 6 sendmail 설치 하는 방법 file 관리자 2016.11.16 6573
83 vsftpd 호스트로갈 루트가 없음(No route to host) 에러 처리 방법 file 관리자 2017.05.08 6348
82 리눅스 CentOS eth1을 eth0로 교체하는 방법 [3] file 관리자 2015.01.09 6297