만들어진 앱(apk 파일)을 가져와서 실습을 진행하겠습니다.
디컴파일(decompile) : apk 파일이 어떤 소스들로 구성되어 있는지 확인하는 과정
리패키징(repackaging) : 소스를 수정하고서 다시 apk 파일로 만들어내는 과정
이미 만들어진 apk 파일의 소스를 수정하려면 디컴파일을 먼저 진행해야 합니다.
수정이 완료되면 다시 앱으로 사용할 수 있도록 리패키징 과정을 통해 apk로 만들어 줍니다.
만들어진 apk 파일을 사용하여 진행하겠습니다.
디컴파일과 리패키징 작업을 진행하기 위해서 apktool을 사용할 것이며,
소스 코드를 보기 위해서 jadx-gui를 사용합니다.
그리고 소스 코드를 수정하기 위해서 eclipse를 사용하였습니다.
1. apktool 준비
구글에 apktool을 검색하면 Github 페이지로 다운로드 링크가 있습니다.
ibotpeaches.github.io/Apktool/install/
wrapper script를 우클릭 한 다음 "다른 이름으로 링크 저장"을 통해 apktool.bat 파일을 다운로드합니다.
이후 "find newest here"를 클릭하여 apktool___.jar 파일을 다운로드합니다.
bitbucket.org/iBotPeaches/apktool/downloads/
매뉴얼에서는 다운로드한 2개의 파일이 c://windows 안에 있는 것을 권장합니다.
그래서 파일을 옮겨주고서 진행합니다.
cmd에서 apktool 명령어를 입력하면 다음과 같이 나타나는 것을 확인할 수 있습니다.
2. jadx-gui 준비
구글에서 jadx를 검색하면 Github 링크로 파일이 제공되어 있는 것을 확인할 수 있습니다.
github.com/skylot/jadx/releases/tag/v1.1.0
페이지의 맨 아래로 내려가면 파일을 제공하는 것을 볼 수 있으며
gui가 적힌 용량이 큰 zip 파일을 원하는 위치에 다운로드하셔서 압축 풀기를 진행합니다.
3. apk 파일 디컴파일
cmd 화면에서 진행합니다.
apk 파일이 있는 경로를 확인하시고 진행하시기 바랍니다.
cmd에서 cd 명령어를 이용해 디컴파일된 파일을 저장할 경로로 이동합니다.
그리고apktool d [디컴파일할 apk파일이 있는 경로] 명령어로 디컴파일을 진행합니다.
cd C:\Users\PCB\Desktop\decom_repack
apktool d C:\Users\PCB\Desktop\decom_repack\app-release.apk
디컴파일이 완료되면 지정한 경로에 폴더가 생성됩니다.
폴더 안에는 smali 폴더가 존재합니다.
소스 코드를 수정할 때 이 폴더에 있는 파일로 수정할 겁니다.
4. jadx-gui로 소스 코드 보기
jadx-gui는 .dex 파일을 열어볼 수 있는 기능이 있습니다.
apk 파일은 다르게 보면 zip 파일이기 때문에 압축 풀기가 가능합니다.
압축 풀기를 진행하게 되면 폴더 안에 classes.dex 파일이 존재하는 것을 확인할 수 있습니다.
파일을 얻어 내었으면 jadx-gui를 실행시키고, classes.dex 파일을 열어서 소스 코드를 확인합니다.
수정하고자 하는 소스 코드가 어디 경로에 위치하는지 확인합니다.
그림에 표시한 "___ University" 문장을 수정하겠습니다.
5. eclipse를 통한 소스 코드 수정
위에서도 한 번 언급했지만, 디컴파일 한 폴더에는 smali 폴더가 있습니다.
그 폴더 안에는 jadx-gui로 확인했던 소스 코드 경로와 일치하는 경로로 파일들이 존재합니다.
java 문서 편집기를 실행한 후, 그 경로에 있는 파일을 열어서 수정 작업을 진행합니다.
수정 작업을 진행한 후 저장하여 수정된 값이 유지되도록 합니다.
6. 수정한 파일 리패키징
수정 작업을 완료하면 다시 apk로 만들기 위해 리패키징 작업을 진행합니다.
apktool b [리패키징할 파일이 있는 경로] -o [새로지정할apk이름].apk
apktool b C:\Users\PCB\Desktop\decom_repack\app-release -o repack_num1.apk
리패키징할 파일이 있는 경로는 "apktool.yml" 이 존재하는 폴더까지 잡아주시면 됩니다.
리패키징 명령을 실행한 폴더 위치에 apk 파일이 생성된 것을 확인할 수 있습니다.
7. 서명 만들기
apk 파일을 리패키징했지만 해당 apk의 서명을 등록하여야 합니다.
서명을 등록하지 않으면 디바이스에 앱을 설치할 수 없게 됩니다.
서명을 만드는 작업을 진행하겠습니다.
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048
명령어가 실행되면 서명을 만들기 위한 질문을 시작합니다.
1. 비밀번호 등록
2. 비밀번호 재확인
3. 이름
4. 인증 계층 구조 이름
5. 인증 조직 이름
6. 지역
7. 포괄 지역
8. 지역 코드(KO)
9. 등록 완료? y = 수락 n = 거절
서명이 저장되었다는(Storing) 문구가 나오면 완성된 것입니다.
서명을 진행한 폴더에서 서명한 키가 생성된 것을 확인할 수 있습니다.
8. apk 파일에 서명하기
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore [리패키징한apk(경로가 다르면 경로까지 입력] alias_name
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore [리패키징한apk] alias_name
apk 파일에 서명하는 명령어입니다.
리패키징한 apk파일은 명령을 수행하는 폴더에 같이 존재한다면 apk 파일 이름만 적고,
다른 폴더에 존재한다면 그 경로까지 적어야 합니다.
alias_name은 처음 서명을 만들 때 사용했던 별칭으로
서명을 만들 때 값을 다르게 했다면 그 값을 따라가야 합니다.
서명 작업이 시작되면 "Enter Passphrase for keystore: " 문구가 등장합니다.
서명을 만드셨을 때 기록한 비밀번호를 입력하시면 됩니다.
비밀번호가 일치하면 서명이 진행되며 마지막에 signed. 문구가 나옵니다.
이제 apk 파일을 앱에 설치할 수 있게 되었습니다.
-끝-
'작업 > Linux, etc' 카테고리의 다른 글
Excel(엑셀) HLOOKUP 사용법 (0) | 2022.03.18 |
---|---|
Excel(엑셀) VLOOKUP 사용법 (0) | 2022.03.17 |
Windows 작업 스케줄러 예약 작업 생성 (0) | 2021.12.04 |
티스토리(Tistory) 글꼴 추가 (2) | 2021.08.16 |
우분투(Ubuntu) 리눅스 MariaDB 설치 (0) | 2021.07.03 |