Android

안드로이드 앱 난독화(Proguard)

태인킴 2020. 6. 30. 20:00
반응형


안드로이드 앱을 열심히 개발하고 출시를 하였습니다. 하지만, 다른 개발자가 나쁜 마음을 먹고 출시된 앱의 apk디컴파일(decompile) 하여 소스 코드를 볼수 있다면, 열심히 개발한 앱을 쉽게 베낄수가 있습니다. 하지만, 이 소스 코드를 해독하기 어렵게 만드는 것이 난독화 작업 입니다.

 

안드로이드에서는 난독화를 위해서 Proguard(프로 가드)를 지원해 줍니다. Proguard(프로 가드)를 false -> true로 만 변경해 주시면 쉽게 난독화가 끝이 납니다.

 

 

1. minifyEnabled : false -> true 로 변경

build.gradle(Module : app) 에서 android -> buildTypes -> release -> minifyEnabled : false -> true변경

 

 

2. buildTypes -> debug 설정

buildTypes는 apk 모드를 설정에 관한 것입니다. buildTypes -> debugapp-debug.apk 에 관한 설정 내용이구요. buildTypes -> releaseapp-release.apk 에 관한 설정 내용 입니다. 따라서 buildTypes -> debug -> minifyEnabled : true 는 app-debug.apk 에도 proguard 를 설정 하여 난독화를 수행한다는 설정 입니다. 

 

 

3. 디컴파일(decompile) 확인

jadx 컴파일러(https://github.com/skylot/jadx/releases)를

이용해서 app-debug.apk를 디컴파일(decompile) 해보면 다음과 같이 확인 하실수 있습니다. 왼쪽난독화 하기 전, 오른쪽난독화 이후 입니다. 난독화 전 단계를 보시면, 개발 패키지 안에 MainActivity 뿐만 아니라 HashGatter 클래스도 확인 할수 있습니다. 하지만 난독화 이후 화면을 보시면 MainActivty 클래스만 있는 것을 확인 할수 있습니다. 실제 HashGetter 클래스는 개발시에 만들어 두었습니다. 그리고 onCreate 메소드 부분을 보시면 해석 하기 어렵게 변수명들이 짧아진 것을 확인 할수 있습니다.

 

반응형