apktool을 이용하여 안드로이드 어플리케이션을 리패키징 할 수 있다는 사실을 알았다. 까먹을 것 같아 방법을 정리 해 두려 한다.
어플리케이션을 리패키징 하는 과정은 크게 5단계 인 것 같다.
- apktool 설치
- 분석 및 리패키징 할 APK 다운
- 어플리케이션 분석
- 어플리케이션 디컴파일 및 코드 수정
- 빌드 및 sign
위의 순서에 따라 과정을 차근차근 적어보려 한다.
1. apktool 설치하기
apktool
의 공식 홈페이지는 여기이다.
나는 윈도우를 사용할 것이므로, 윈도우 기준으로 설치할 것이다.
설치 과정은 다음과 같다.
- https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat 에서 apktool.bat 다운받기
- 위의 링크 클릭 후 마우스 오른쪽 버튼 클릭 → 다른 이름으로 저장 → apktool.bat으로 저장 혹은 해당 내용 복사 후 apktool.bat으로 저장
- https://bitbucket.org/iBotPeaches/apktool/downloads/ 에서 apktool.jar 다운받기
- 최신 버전의 apktool.jar 다운 후, 이름을 apktool.jar로 변경
- 다운받은 apktool.bat과 apktool.jar를 C://Windows에 옮기기
여기까지 하면 apktool
을 사용 할 준비가 끝난다.
2. APK 다운
그럼 이제 분석 할 APK
와 이를 분석 할 jd-gui
를 다운받아야 한다.
APK
는 아래의 링크에서 검색 해 다운받을 수 있다.
해당 링크에서 오른쪽의 검색 창에 다운받을 어플리케이션의 이름을 입력하면 APK
파일을 다운받을 수 있다.
3. 어플리케이션 분석 툴 다운
다음 단계는 어플리케이션을 분석해야 하는데, 분석을 위해서는 또 다른 툴이 필요하다.
jadx
라는 툴인데, 무료로 제공되며 apk 파일을 바로 java 코드로 볼 수 있게 해 준다.
아래와 같이 해당 링크를 클릭하면 최신 버전의 jadx
를 다운받을 수 있다.
링크 클릭 시 3개의 파일이 있을텐데 이 중 zip
파일을 다운받으면 된다.
압축을 해제하고 이 중 jadx-gui.bat
을 실행시키면 된다.
Windows 10의 경우 경고화면이 나올 수 있는데, 추가 정보 보기
를 클릭 후 실행
버튼을 누르면 정상적으로 실행할 수 있다.
실행 후 분석할 APK 파일을 열면 JAVA 코드로 디컴파일 된 것을 확인할 수 있다.
4. 어플리케이션 디컴파일 하기
이제 어플리케이션을 디컴파일 할 차례이다. 리패키징을 하기 위해서는 먼저 디컴파일을 하고 코드를 수정한 후, 다시 빌드를 하고 마지막으로 어플리케이션에 서명을 해 주어야 한다. 디컴파일을 하는 방법은 다음과 같다.
|
|
그럼 명령어를 실행 한 디렉토리에 디컴파일 된 APK
파일을 확인할 수 있다.
나의 경우에는 cmd
를 실행 한 경로가 C:\Users\USERNAME
이었기에 디컴파일 된 폴더도 같은 곳에 생성되었다.
5. 어플리케이션 리패키징 하기
디컴파일된 어플리케이션을 확인 해 보면 smali
라는 디렉토리가 있는데, 이 디렉토리 안을 보면 jadx
에서 본 구조와 동일한 것을 알 수 있다.
따라서 smali
디렉토리에서 jadx
와 비교하며 고칠 부분을 찾은 후, .smali
코드를 수정한 후 다시 빌드하면 어플리케이션을 리패키징 할 수 있다.
리패키징 방법은 다음과 같다.
|
|
그럼 아래와 같이 dist
디렉토리가 생성되며, 그 안에 apk
파일이 생성 된 것을 확인할 수 있다.
6. APK 서명하기
이제 마지막으로 서명을 해야 정상적으로 어플리케이션을 실행시킬 수 있다.
서명을 위한 파일은 여기에 있다.
해당 디렉토리에 서명 할 APK
파일을 넣고, 아래의 명령어를 실행하면 정상적으로 서명 된 것을 확인할 수 있다.
|
|
위의 명령어를 실행 한 결과 아래와 같이 apk
가 새로 생성 된 것을 확인할 수 있다.
이제 이 apk
파일을 실행시키면 정상적으로 동작 할 것이다.