안녕하세요.
오늘은 난독화 PROGUARD에 대해서 제가 하는 만큼 설명을 해보려고 합니다.
앱을 만들면 디컴파일을 통해서 다시 코드를 복구할 수 있다고 한다.
말이 복구지 소스코드를 추출하여 개발자가 밤새도록 만든 코드를 훔칠 수도 있다는 말인 것 같다.
그리고 API 코드를 가져다가 어둠의 경로로 사용할 수도 있지 않을까? 즉 유료로 가져온 API를
쓰는 경우 등
그래서 이런 것들을 방지하기 위해 개발자들이 하는 방법은 코드를 난독화하여 업로드하는 것이다.
난독화하면 의미 없는 이름으로 코드들이 변경되어 디컴파일 즉 REENGINEER 하는 것을 힘들게 어렵게 하는 게 목적이다.
구글링 해본 바로는 100프로 뚫지 못하는 코드는 없다고 하나 얼마나 시간을 드려서 디컴파일링을 하느냐 인 것 같다.
조그마한 앱 정도 만들 때는 걱정할 필요가 없겠지만
큰 회사인 경우 정보유출 등의 문제로 보안을 강화하는 이유가 이런 것인 것 같다.
그래서 조그마한 앱 정도 만드는 사람에게는 PROGUARD가 딱 적당한 것 같다.
무료이며 별도 설치 없이 ANDROID STUDIO에서 APP 폴더에 BUILD.GRADLE 에 아래와 같은 코드를 설정하면 앱에 PROGUARD 난독화를 할 수 있다.
minifyEnabled에 TRUE라고 해주고 RUN APP을 하면 난독화가 되어 앱이 실행된다.
release일 때 debug 일때 따로따로 정할 수 있다.
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } |
이렇게 바꿔주기만 해서 앱이 문제없이 실행된다면 아주 좋겠지만.
앱에 사용하는 패키지 라이브러리 등등 에 따라서 앱이 실행이 안될 수도 있다.
그런 경우 지정 패키지 라이브러리 클래스 에는 난독화를 없애어야 앱이 재데로 실행한다.
예로 아래와 같이 proguard-rules.pro에 적으면 된다.
앱이 어떤 라이브러리, 패키지, 클래스를 사용하느냐에 따라 다르게 적어야 하니
난독화 후 앱을 실행 후 에러 메시지로 구글링을 해봐서 찾아 봐야 할 것 같다.
-keepattributes Signature -keep public class com.google.** {*;} -keepnames class com.firebase.** { *; } -keepclassmembers class com.ambitiousproject.lottolab.** { *; } |
코딩은 너무 어렵다.
'앱태크' 카테고리의 다른 글
firebase 프로젝트 서버 변경 시 확인해야하는 것 (0) | 2020.03.27 |
---|---|
Firestore 프로젝트 생성시 정했던 region 변경 (0) | 2020.03.26 |