본문 바로가기
놀기/Android

[Android] apk decomplie & repackaging

by Hi~ 2021. 7. 7.

2021.07.07 - [일하기/Arduino] - [Android] WebView 기반 앱 만들기 (초보용, 사진 위주)

 

[Android] WebView 기반 앱 만들기 (초보용, 사진 위주)

이번 포스팅은 아주 간단한 WebView 기반의 앱 만들기다. 왜 이런 왕초보 수준의 앱을 만드냐 생각되겠지만, 그냥 다음 포스팅을 위한 밑 작업이다. ㅎㅎㅎ Android 스튜디오 설치는 너무 간단하니 PA

busyman.tistory.com

 

이전 포스트에서 간단한 WebView를 사용한 앱을 만들었는데...

이런 소스 코드를 잃어버리고 apk 파일만 있다.

수정할 부분이 있는데 어쩌지.. ㅠㅠ

 

이럴 때 우리에게 필요한 것은 !!

decompile이다.

decompile 후 필요한 부분을 수정하고 다시 묶어 apk로 만들 수 있다.

그럼 한번 해보자.

 


1. Apktool 다운로드

Apktool은 apk 파일을 reverse engineering을 위한 도구이다.

다음 사이트에서 apktool_2.5.0.jar 파일을 다운로드한다.

 

https://ibotpeaches.github.io/Apktool/

 

Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.

A tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form and rebuild them after making some modifications. It also makes working with an app easier because of the project like file structure and

ibotpeaches.github.io

 

 


2. Decompiling

다운로드한 apktool_2.5.0.jar를 사용해서 apk 파일 (app-release.apk)을 decompile 한다.

java는 openjdk version "11.0.9.1"을 사용하였다. 다른 버전으로도 되겠지만, 일단 해보고 안되면 다른 버전으로 바꿔서 해보자.

 

java -jar apktool_2.5.0.jar d app-release.apk -o test

 

 

아래와 같이 파일이 생성되었다.

 

 


3. 파일 수정 하기

복잡한 수정은 아니고 화면의 "A : How are you?" 아래 "B : I am Fine. Thank you, and you?" 를 넣으려고 한다.

 

 

기존 앱 화면

 

사용한 HTML 파일이 assets 폴더 안에 있다. 이 파일을 변경하자.

 

 

 

수정 완료 !!

 

 


4. Repacking

apktool_2.5.0.jar를 사용해서 변경된 파일을 다시 APK로 만든다.

 

java -jar apktool_2.5.0.jar b test -o app-release-re.apk

 

 

 


5. APK 서명 하기 (Sign)

만든 apk를 스마트 폰으로 옮겨 실행하면 아래와 같이 설치되지 않는다. 앱이 서명되지 않아서 나타나는 현상이다. 지금부터 서명을 해보자.

 

 

일단, 서명을 위한 키 (Key Pair)를 생성한다.

 

keytool -genkeypair -v -keystore test.keystore -alias test -keyalg RSA -keysize 4096 -validity 10000

 

 

생성한 키를 사용해서 서명한다. 서명에는 jarsigner.exe를 사용한다. (JDK에 포함되어 있음)

사용법은 아래 사이트를 참조하시라.

https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html

 

 

서명 완료 !!

 


6. 설치 후 실행하기

apk 파일을 스마트 폰으로 옮겨 설치 후, 실행해보자.

짠~ 아래와 같이 앱이 수정되었다.

 


 

7. 후기

HTML 기반으로 작성된 앱은 상당히 쉽게 수정이 가능하며 다른 언어로 앱을 만들어도 수정이 어렵지는 않다. JNI로 만들었다 해서 안전을 보장할 수는 없다. 앱의 변형보다는 앱 내의 자료를 얻기 위해 Decompiling하는 경우도 많다. 따라서,  Decompiling 및 Repacking이 의미 없는 방식으로 앱을 구성해야 어느 정도 안전이 보장될 것이다.

어쨌든 이런 짓을 잘못하면 쇠고랑 찰 수 있으니 조심해야 한다. 그래도 해보고 싶다면 혼자 해보고 관련 내용을 포스팅하지 말기를 바란다.

 

 

 

 

댓글