안드로이드

[Android] 안드로이드 난독화 적용

SojuMan 2013. 5. 15. 14:50

펌 :

  • 적용 환경
    • Eclipse Indigo Service Release 2
    • Proguard v4.7
    • ADT Tools 21.0.0.v201210310015-519525


  • Proguard 적용방법
    1. Eclipse 메뉴/ Window/ Android SDK Manager 를 실행하여 최신으로 업데이트.
    2. Eclipse 메뉴/ Help/ Check for Updates 를 실행하여 ADT Tools 를 최신으로 업데이트
    3. Proguard v4.8을 사이트에서 다운받아 ${sdk.dir}\tools\proguard에 설치함.(사이트에서 다운이 불가하여 적용안함. )
    4. Project의 project.properties 에 다음 추가

      proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

    5. Project에 proguard-project.txt 를 추가 하고 다음 내용을 추가

      -optimizationpasses 5
      -dontusemixedcaseclassnames
      -dontskipnonpubliclibraryclasses
      -dontpreverify
      -verbose
      -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

      -keep public class * extends android.app.Activity
      -keep public class * extends android.app.Application
      -keep public class * extends android.app.Service
      -keep public class * extends android.content.BroadcastReceiver
      -keep public class * extends android.content.ContentProvider
      -keep public class * extends android.app.backup.BackupAgentHelper
      -keep public class * extends android.preference.Preference
      -keep public class com.android.vending.licensing.ILicensingService

      -keepclasseswithmembernames class * {
      native <methods>;
      }

      -keepclasseswithmembers class * {
      public <init>(android.content.Context, android.util.AttributeSet);
      }

      -keepclasseswithmembers class * {
      public <init>(android.content.Context, android.util.AttributeSet, int);
      }

      -keepclassmembers class * extends android.app.Activity {
      public void *(android.view.View);
      }

      -keepclassmembers enum * {
      public static **[] values();
      public static ** valueOf(java.lang.String);
      }

      -keep class * implements android.os.Parcelable {
      public static final android.os.Parcelable$Creator *;
      }

    6. Eclipse 메뉴/ File/ Export / Android/ Export Android Application 을 선택 후 Next

    7. 프로젝트 선택

    8. Keystore 선택 후 비밀번호 입력

    9. Key Alias 선택 후 비밀번호 입력

    10. APK 파일 선택 후 Finish

    11. project에 proguard 폴더가 생기고 dump.txt, mapping.txt, seeds.txt, usage.txt가 생기면 완료
  • 기타
    1. proguard-project.txt 에 난독화 적용 제외 방법

      -keepclasseswithmembers class javazoom.jl.decoder.**

    2. 난독화 후 디버깅에 대한 방법 연구 필요
      • 스택트레이스를 mapping.txt와 비교하여 오류 위치 확인만 했음.


  • 참고