1. 디컴파일(Decompile)
디컴파일이란 컴파일(사람이 읽을 수 있는 소스코드를 기계어로 변환하는 작업)의 반대 말로 APK 파일을 분해하는 과정을 통해 리소스, 소스코드, Smali 코드가 나오게 된다.
2. 리패키징
리패키징이란 디컴파일을 통해 사람이 읽을 수 있는 소스코드, Smali 코드를 변조 후 앱을 구동할 수 있도록 패키징 하는 것이다.
3. apktool 다운로드
앞서 설명한 디컴파일과 리패키징을 하기 위해서는 apktool이 필요하다.
apktool이란 안드로이드 대상의 리버스 엔지니어링 도구이며 apk파일을 디컴파일 하거나, 코드를 수정하여 패키징 할 수 tool이다.
Apktool | Apktool
A tool for reverse engineering Android apk files.
apktool.org
해당 사이트에 apktool을 다운로드할 수 있다.
4. 디컴파일 및 리패키징 실습
실습을 위해 apktool 파일과 연습하기 위한 FridaLab.apk를 준비하였다.
Fridalab을 실행했을 때의 정상적으로 동작하는 앱을 디컴파일 해볼 것이다.
디컴파일 명령어는 아래와 같다.
java - jar [apktool 이름] -f -r d [apk파일]
해당 명령어를 입력하면 디컴파일이 된다.
디컴파일을 하면 리소스 파일과 smali파일이 나오는 것을 확인할 수 있다.
이전에 FridaLab 문제를 푼 글을 보면 문제 해결 시 CompleteArr 배열의 값에 변화 주는 것을 확인했다.
그래서 이번에 smali코드에서 CompleteArr를 변조시켜 볼 것이다.
smali -> uk -> rossmarks -> fridalab에 접근 후 Mainactivity.smali을 연다.
smali 코드는 이전의 smali글에서 지시자나 제어문을 확인할 수 있다.
해당 CompleteArr에 있는 배열에 있는 값을 변경하여 저장한다.
java -jar [apktool이름] -f -r b FridaLab
이후 위의 명령어를 입력하게 되면
위와 같이 리패키징이 된다. 이 상태로 안드로이드에 다운로드할 시 서명문제로 인하여 다운로드가 되지 않기 때문에 Sinning을 해준다.
keytool -genkey -v -keystore [키이름.keystore] -alias [별명] -keyalg RSA -keysize 2048
Sinning 할 키를 만들어 주고 앱에 재서명을 해준다.
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [만든 키 파일] [apk 파일명] [별명]
해당 명령어를 사용하기 전 디컴파일한 폴더의 dist폴더 안에 리패키징한 apk를 키를 생성한 폴더로 옮긴다.
이후 명령어를 실행하게 되면 재서명이 된다.
해당 apk를 안드로이드로 옮겨 실행 시 정상적으로 다운로드가 되며 변경된 코드가 정상동작하는 것을 확인할 수 있다.
참조
https://www.ahnlab.com/ko/contents/content-center/19269
AhnLab | 콘텐츠 센터
www.ahnlab.com
https://hagsig.tistory.com/192
안드로이드 APK 파일 디컴파일/리패키징 방법
1. 디컴파일/리패키징 이란?1.1. 컴파일(compile)- 소스코드(source code)에서 기계가 인식할 수 있는 *바이너리(binary) 파일로 변환하는 과정을 말한다.*바이너리 파일 : 사람이 아닌 컴퓨터가 직접 해
hagsig.tistory.com
https://cgy12306.tistory.com/394
[Mobile] 안드로이드 apk Decompile & Recompile & Signing
Decompile apktool d [apk 파일] ※ 난독화가 되어 있으면 에러가 발생할 수 있습니다. -r 옵션으로 리소스 디컴파일링 무시합니다. decompile을 하면 apk파일명으로 폴더가 하나 생성됩니다. 디컴파일과 리
cgy12306.tistory.com
https://blog.naver.com/heapskewl73/222277069346
안드로이드 apktool 에러 해결방법
디컴파일 java -jar apktool_2.4.0.jar -f -r d base.apk 리패키징 java -jar apktool_2.4.0.jar -f -r b b...
blog.naver.com
'앱 진단 > 안드로이드 진단' 카테고리의 다른 글
안드로이드 리패키징(인시큐어뱅크) (1) | 2025.04.01 |
---|---|
안드로이드 - 루팅 (0) | 2024.12.17 |
안드로이드 - Smali (0) | 2024.09.09 |
안드로이드 - DEX (0) | 2024.08.20 |