Android 관련

Android 난독화 - Flutter

이나주니 2024. 7. 31. 10:54
반응형

오늘 포스팅은 안드로이드 난독화에대해 알아보겠습니다.

 

안드로이드 난독화(obfuscation)는 안드로이드 애플리케이션의 소스 코드를 이해하기 어렵게 만들어 보안성을 높이는 기술입니다. 난독화를 통해 코드를 분석하거나 역공학하려는 공격자로부터 애플리케이션을 보호할 수 있습니다.

 

 

  • 이름 난독화 (Name Obfuscation):
    • 클래스, 메소드, 변수 등의 이름을 의미 없는 문자나 단어로 변경합니다. 예를 들어, calculateSum()이라는 메소드 이름을 a()로 변경합니다.
  • 제어 흐름 난독화 (Control Flow Obfuscation):
    • 프로그램의 제어 흐름을 복잡하게 만듭니다. 예를 들어, 불필요한 조건문이나 루프를 추가하여 코드의 흐름을 이해하기 어렵게 만듭니다.
  • 데이터 난독화 (Data Obfuscation):
    • 상수 값이나 리터럴 값을 암호화하거나 인코딩하여 저장합니다. 실행 중에만 복호화하여 사용합니다.
  • 코드 인라이닝 (Code Inlining):
    • 메소드 호출을 제거하고 메소드의 코드를 호출 위치에 직접 삽입합니다. 이를 통해 디버깅이나 분석을 더 어렵게 만듭니다.
  • 리플렉션 사용 (Using Reflection):
    • 리플렉션을 통해 런타임 시에만 접근할 수 있는 방식으로 메소드나 변수를 호출합니다. 이는 코드 분석 도구가 코드의 실제 동작을 이해하기 어렵게 만듭니다.

 

app/build.gradle

 

 

android/app 안에 proguard-rules.pro 파일을 만든다.

proguard-rules.pro 안에 아래 코드를 입력한다.

## Flutter wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.embedding.** { *; }
-keep class io.flutter.** { *; }
-keep class com.nextdoor.god.** { *; }
-dontwarn okio.**
-dontwarn retrofit2.**
-dontwarn io.flutter.embedding.**

 

주의사항

  • 난독화는 애플리케이션의 보안을 강화할 수 있지만, 모든 공격을 막을 수 있는 것은 아닙니다. 난독화는 보안 강화 전략의 하나로 사용되며, 다른 보안 기법들과 함께 사용해야 합니다.
  • 난독화 설정을 잘못하면 애플리케이션의 동작에 문제가 생길 수 있습니다. 따라서 난독화 후 애플리케이션이 정상적으로 동작하는지 충분히 테스트해야 합니다.

 

반응형