Flutter의 코드 난독화(Android)

Dec 15 2022
이 이야기는 Flutter 앱을 프로덕션에 게시하려고 할 때 시작됩니다. 하지만 그 전에 앱은 VAPT(취약점 평가 및 침투 테스트) 프로세스를 거쳤습니다.
Unsplash의 FLY:D 사진

이 이야기는 Flutter 앱을 프로덕션에 게시하려고 할 때 시작됩니다. 하지만 그 전에 앱은 VAPT( 취약성 평가 및 침투 테스트 ) 프로세스를 거쳤습니다.

코드 난독화란 무엇입니까?

코드 난독화는 프로그램의 코드를 이해하기 어렵게 만드는 과정으로, 일반적으로 리버스 엔지니어링이나 수정을 더 어렵게 만드는 것을 목표로 합니다. 이는 변수 및 함수 이름을 읽을 수 없게 만들거나 코드에 간접 또는 복잡성 계층을 추가하는 등의 다양한 기술을 통해 수행할 수 있습니다. 난독화는 종종 지적 재산을 보호하거나 프로그램의 악의적인 변조를 방지하는 데 사용됩니다. (ChatGPT 덕분에 ).

코드가 난독화되는 이유는 무엇입니까?

사용자 데이터의 보안이 무엇보다 중요한 앱을 개발하는 경우 이를 손상시킬 수 없습니다. 어리석은 증거 보안은 신화이지만. 그러나 다음 방법을 사용하여 어느 정도까지 최대화할 수 있습니다.

  1. 코드 축소(또는 트리 쉐이킹) : 앱에서 사용하지 않는 클래스, 필드, 메서드 및 특성을 감지하고 안전하게 제거합니다.

3. Proguard 활성화 : Proguard 규칙을 사용하여 축소 및 축소 프로세스 중에 변경하지 않으려는 파일을 정의합니다.

방법 부분으로 이동하겠습니다.

flutter 명령을 사용한 난독화

export version=1.0.0
flutter build apk --release --shrink --obfuscate --split-debug-info=misc/mapping/${version}

buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            useProguard true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

설명 :

  1. 릴리스 모드 서명 구성을 사용합니다. 서명 자격 증명을 언급할 수 있는 .jks 파일과 key.properties를 만들어야 합니다.
  2. 앱 폴더 안에 proguard-rules.pro를 보관하면 그 안에 규칙을 정의할 수 있습니다. 여기에서 proguard 규칙을 정의하는 방법을 읽어보세요.
  3. 난독화 중에 플러터 파일을 보호하려면 proguard-rules 파일 내에서 다음 줄을 사용하세요.
  4. #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.**  { *; }
    -keep class io.flutter.plugins.**  { *; }
    

    -keep class org.xmlpull.v1.** { *;}
     -dontwarn org.xmlpull.v1.**
    

이제 전문가의 팁을 받을 시간입니다.

여기까지 오셨다면 여기 선물이 있습니다. proguard를 활성화한 후 앱이 계속 충돌합니까?

이 해킹을 시도하여 디버깅하십시오.

릴리스를 디버그로 교체하고 디버그 모드에서 앱을 실행합니다.

buildTypes {
        debug {
            signingConfig signingConfigs.release
            minifyEnabled true
            useProguard true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

오늘은 그게 다야. 끝까지 함께해주셔서 감사합니다. 제안을 환영합니다.

Twitter , Instagram 또는 LinkedIn 에서 지금 연결합시다 .