Everything is hacked.

There is no 100 % security.

Tools/Android

App modulation using apktool, smali

Kai_HT 2026. 1. 8. 02:02

https://www.android.com

취약점 점검 항목 중 전자금융 관련 항목으로 앱 로직 임의 변조 항목이 주로 취약점으로 잡히곤 한다.

본 취약점 항목 점검을 위해 일반적으로 APKEasyTool 을 사용하여 디컴파일을 수행하고 smali 코드 변조 이후, 리컴파일을 수행하는데 안드로이드 보안 정책으로 인하여 apk 리컴파일 수행 시, APKEasyTool 만으로 정상 수행되지 않을 때가 있다.

해당 문제 해결을 위해 본인의 경우 변조 및 로직이 변경된 Smali 코드가 포함된 class 파일만을 리컴파일하여 apk 패키지 내 직접 덮어씌워 적용시키는 방법을 애용한다.

해당 방법 이용을 위해 수동으로 class 파일에 대한 리컴파일 및 서명이 요구되므로 추가 툴이 필요하다.

- 리컴파일 툴: https://repo1.maven.org/maven2/org/smali/smali/2.5.2/smali-2.5.2.jar
- apk signer: https://github.com/patrickfav/uber-apk-signer/releases/download/v1.3.0/uber-apk-signer-1.3.0.jar


해당 툴에 대한 디컴파일 수행 (디컴파일은 APK Easy Tool 을 사용해도 문제 없다.) 이후, 변조할 구간 Smali 코드에서 Toast Message 구간을 추가한다.

Class 파일 내 smali 코드 변조

smali 코드 변조 이후, smali.jar 파일을 이용하여 변조한 Smali 코드가 포함된 class 를 리컴파을 수행해준다.

smali.jar 을 이용한 classes.dex 리컴파일 수행

해당 classes.dex 파일 리컴파일 수행 이후, 기존 apk 파일을 반디집 등의 압축 관리 프로그램으로 열어 리컴파일된 classes.dex 파일을 덮어씌워준다.

리컴파일된 classes.dex 파일 덮어씌우기

해당 앱에 대한 패칭이 끝났으므로 리사이닝만 수행하면 해당 앱 변조가 끝난다.

uber-apk-signer.jar 을 이용한 apk 파일 리사이닝

해당 Signning 을 수행하고 나면, 화면 내 'VERIFY' 로그에서 확인할 수 있듯이 '[appName-aligned-debugsigned.apk] 이라는 이름의 apk 파일 획득이 가능하다. 해당 파일을 디바이스 내 설치 이후 해당 로직이 동작하면 취약, 아니면 양호로 판단하면 되겠다.

자동화 툴:

 

GitHub - KaiHT-Ladiant/Android-Patched-Repackging-For-Pentester: apk file Repackaging for pentester

apk file Repackaging for pentester. Contribute to KaiHT-Ladiant/Android-Patched-Repackging-For-Pentester development by creating an account on GitHub.

github.com