메뉴 건너뛰기

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에 따라 이렇게 소스가 잘나오는

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

번호 제목 글쓴이 날짜 조회 수
88 Ubuntu 16.04 apt-get 패키지 설치 오류 발생시 해결방법 file 관리자 2017.10.10 85
87 Ubuntu 16.04 단축 URL을 생성하는 YOURLS 설치 방법 file 관리자 2017.08.11 53
86 Ubuntu 16.04 jar 디컴파일 툴 JD-GUI 설치 file 관리자 2017.08.01 95
» linux apk를 jar로 디컴파일하는 dex2jar 설치 및 사용 방법 file 관리자 2017.08.01 91
84 우분투 16.04 /var/lib/dpkg/lock 잠금 파일을 얻을 수 없습니다 해결법 [1] file 관리자 2017.07.20 497
83 우분투 16.04 LTS 서버 보안 강화를 위한 knockd 설치 방법 file 관리자 2017.07.06 74
82 CentOS 6 comodo Antivirus for Linux 백신 설치 방법 file 관리자 2017.06.15 85
81 CentOS 6 ssh google-authenticator로 OTP 접속하는 방법 file 관리자 2017.06.09 92
80 vsftpd 호스트로갈 루트가 없음(No route to host) 에러 처리 방법 file 관리자 2017.05.08 621
79 오픈스택 qcow2 이미지 가져오기 secret 관리자 2017.04.17 0
78 let’s Encrypt SSL 무료 인증서 certbot을 통해 설치 및 설정하는 방법 file 관리자 2017.04.13 1127
77 VPN를 악용하는 xe 광고글 작성자를 iptables로 차단하는 방법 [2] file 관리자 2017.03.31 100
76 리눅스 CentOS 마인크래프트 서버 spigot 1.11.2 설치(셋팅)방법 file 관리자 2017.02.27 516
75 CentOS 6.8 네트워크 간혈적으로 끊김 현상 해결 방법 file 관리자 2017.02.20 885
74 오픈스택 미타카 NoValidHost: No valid host was found. There are not enough hosts available. file 관리자 2017.02.15 409
73 umount target is busy 강제 해제하는 방법 관리자 2017.02.10 254
72 리눅스 centos6에서 java 버전 변경하기 관리자 2016.12.26 726
71 ssh-keygen secret 관리자 2016.12.23 0
70 centos 6 tomcat 설치 file 관리자 2016.12.09 724
69 CentOS 6 sendmail 설치 하는 방법 file 관리자 2016.11.16 979