# Android 앱 소스 난독화/암호화(Obfuscation) 종류
"Proguard면 충분하지!" 하고 살았던 그동안의 시간을 반성한다.
난독화의 종류는 다양하며 Proguard는 그 중 극히 일부분만 혹은 거의 보호를 못한다고 봐야 된다.
# 소스 난독화/암호화 종류
1. Renaming: 식별자 전환. 클래스/메소드의 이름을 a, b, c... 등 의미없는 이름으로 대체
2. Control Flow: 제어흐름 변환. A->B 와 같던 실행순서를 A->C->B 처럼 C구문을 삽입하는 기법
3. String Encryption: 문자열 암호화. 문자열을 암호화된 문자열로 대체하고 사용시 이를 치환
4. API Hiding: API 은닉. 특정 라이브러리 또는 메소드 호출을 Reflection으로 대체하여 숨긴다.
5. Class Encryption: 파일내용 전체를 암호화하여 저장해 두었다가 동적으로 복호화, 클래스 로더로 로딩
# 안드로이드
6. DEX Encryption: Dalvik Executable 파일 자체를 암호화 한다.
난독화를 직접 할 수도 있다지만
아래와 같이 Proguard는 식별자 변환만 하고 나머지 툴은 모두 유료다.
|
Proguard(무료) |
DashOPro(유료) |
Allatori(유료) | DexGuard(유료) |
Renaming |
O |
O |
O | O |
Control Flow |
X |
O |
O | O |
String Encryption | X | O | O | O |
API hiding | X | X | X | O |
Class Encryption | X | X | X | O |
DEX Entryption | X | X | X | X |
Reference
- Kim Jiyun, Go Namhyeon, Park Yongsu, A Code Concealment Method using Java Reflection and Dynamic Loading in Android, Journal of the Korea Institute of Information Security and Cryptology, Volume 25, Issue 1, 2015, pp.17-30
'Operating Systems > Android' 카테고리의 다른 글
Android Material Design 스크롤에 따라 상단이 접히고 나오는 레이아웃 구성과 역할 (0) | 2018.11.19 |
---|---|
Android Material Design 사이드메뉴(햄버그 메뉴?) 레이아웃 구성과 역할 (0) | 2018.11.19 |
Android Decompiling & Repackaging (0) | 2018.08.29 |
[Android Auto] VS Apple CarPlay 기능 알아보기 (0) | 2018.07.27 |
Wrap-up "Kotlin for Android Developers" at Udacity (0) | 2018.04.12 |