MOBILE/Android

[AOS] APK 파일 리패키징 방법

MUSH 2024. 1. 11. 15:10

안녕하세요 머쉬입니다.

APK 파일을 분석 후 smali 코드를 변조하여 리패키징하는 방법은 다음과 같습니다.

 

실습 도구 다운로드

APK 파일을 리패키징하기 위해 필요한 도구는 다음과 같습니다.

 

1. UnCrackable 앱

- 정보보안을 연구하는 그룹인 OWASP에서 모바일 리버스 엔지니어링 연습용으로 개발한 앱

- AOS Level 1~3, iOS Level 1~2

https://github.com/OWASP/owasp-mastg/tree/master/Crackmes/Android/Level_01

 

2. jadx

https://github.com/skylot/jadx/releases

 

Releases · skylot/jadx

Dex to Java decompiler. Contribute to skylot/jadx development by creating an account on GitHub.

github.com

 

3. Apktool

https://apktool.org/

 

Apktool | Apktool

A tool for reverse engineering Android apk files.

apktool.org

 

리패키징 방법

먼저 Aptkool을 이용하여 APK 파일을 디컴파일해줍니다.

java -jar apktool_2.9.1.jar d UnCrackable-Level1.apk

 

jadx-gui를 이용하여 소스코드를 분석합니다.

간략하게 APK 실행 시 노출되는 "Root detected!" 문구를 수정합니다.

※ jadx-gui를 이용하여 소스코드를 분석 후 해당되는 smail 코드를 수정합니다.

 

소스코드 수정이 끝난 후 디컴파일된 폴더를 빌드시켜 APK 파일을 생성합니다.

APK 파일은 생성하였으나 이대로 안드로이드 기기에 설치하여 사용하지 못하므로 APK Signing을 진행합니다.

java -jar apktool_2.9.1.jar b UnCrackable-Level1 -o Modify.apk

 

APK Signing 방법

APK Signing을 하기 전 keystore 서명을 생성합니다.

- 패스워드 등록 > 패스워드 재확인 > 이름 > 조직 단위 이름 > 조직 이름 > 구/군/시 > 시/도 > 국가코드

※ keytool, jarsigner는 java 설치 시 기본적으로 설치되어있으므로, java 설치 경로에 접근하거나 환경변수 설정을 통해 실행하면됩니다.

keytool -genkey -v -keystore mush.keystore -alias mush -keyalg RSA -keysize 2048

 

keystore 서명을 생성하였으니 생성한 서명으로 APK 파일에 서명을 시도합니다.

- keystore 서명 파일에 대한 패스워드는 위에서 생성했던 패스워드를 입력

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mush.keystore Modify.apk mush

 

리패키징된 APK 확인

jadx-gui 도구를 통해 코드가 수정된 것을 확인하고, 안드로이드 기기에 리패키징된 APK 파일을 설치해 변경된 코드가 정상적으로 작동하는지 확인합니다.

 

Reference

https://domdom.tistory.com/287#recentComments

https://hagsig.tistory.com/193

https://hagsig.tistory.com/192