Android 앱 개발을 하다보면 보안을 위해서 출시 전에는 꼭 난독화를 해야한다.
Android 소스 난독화란?
앱의 소스 코드를 난독화하는 기술로,
안드로이드 앱의 소스 코드를 분석하기 어렵게 만들기 위한 기술입니다.
이를 통해 소스 코드를 더욱 안전하게 보호할 수 있습니다.
해커가 앱의 코드를 이해하고 악성 기능을 추가하는 것을 어렵게 만들 수 있습니다.
그렇기 때문에 앱을 배포하기 전 앱 소스 난독화는 꼭 필요합니다.
Proguard 적용하기
Proguard는 소스코드를 난독화 및 최적화 해주는 무료 오픈소스 툴입니다.
minifyEnabled
축소, 난독화 및 코드 최적화를 활성화 / 비활성화 한다.
getDefaultProguardFile("proguard-android.txt")
Android Gradle 플러그인과 함께 패키지된 기본 Proguard 규칙 파일이 포함되어 있다.
proguard-rules.pro
프로젝트 레벨에 proguard-rules.pro 파일을 만들고 축소, 난독화 제외 클래서, shrink 여부 등에 관한 룰을 작성한다.
dex2jar 라이브러리를 사용해서 디컴파일하기
1. dependency 설치
brew install apktool dex2jar
2. apk 빌드
난독화한 앱 apk 빌드 파일을 가져옵니다.
3. 디컴파일
cd /path/to/apk/file
apktool d -s -o decompile app-release.apk
4. dex 파일을 jar로 변경
d2j-dex2jar classes.dex
d2j-dex2jar classes2.dex
d2j-dex2jar classes3.dex
5. jar파일을 zip파일로 변경
mv classes-dex2jar.jar classes-dex2jar.zip
mv classes2-dex2jar.jar classes2-dex2jar.zip
mv classes3-dex2jar.jar classes3-dex2jar.zip
6. zip 파일 해제
finder에서 zip 파일을 더블클릭하여 압축을 해제합니다.
7. 코드 확인
압축 해제된 디렉터리에서 파일 내용을 확인해봅니다.
아래처럼 사람이 읽을 수 없다면 성공한 것이다 !!!!
앱 출시를 위해서 난독화해본 건 처음이라, 디컴파일하면서 많이 애먹었다.
누군가 이 글을 보고 많은 도움이 되었으면 좋겠다 ㅎㅎ
'React-Native' 카테고리의 다른 글
[react-native] iOS HTTP 통신 ATS policy (0) | 2024.07.21 |
---|---|
[react-native] react-native와 webview 통신 (0) | 2023.09.05 |
[react-native] fastlane을 사용한 앱 배포 자동화 (Android, iOS) (0) | 2023.08.29 |
[react-native] 앱 웹뷰 구글 애드센스 광고 추가하기 (0) | 2023.08.11 |
[RN 최적화] react-native-bundle-visualizer 사용기 (0) | 2023.07.28 |