การทำให้โค้ดสับสนใน Flutter (Android)

Dec 15 2022
เรื่องราวเริ่มต้นขึ้นเมื่อเรากำลังจะเผยแพร่แอพ flutter สู่การผลิต แต่ก่อนหน้านั้น แอปจะเข้าสู่กระบวนการ VAPT (Vulnerability Assessment and Penetration Testing)
ภาพถ่ายโดย FLY:D บน Unsplash

เรื่องราวเริ่มต้นขึ้นเมื่อเรากำลังจะเผยแพร่แอพ flutter สู่การผลิต แต่ก่อนหน้านั้น แอปได้เข้าสู่กระบวนการ VAPT ( Vulnerability Assessment and Penetration Testing )

การทำให้โค้ดยุ่งเหยิงคืออะไร?

การทำให้โค้ดยุ่งเหยิงคือกระบวนการสร้างโค้ดของโปรแกรมที่เข้าใจยาก โดยปกติแล้วจะมีจุดประสงค์เพื่อทำให้การทำวิศวกรรมย้อนกลับหรือแก้ไขทำได้ยากขึ้น ซึ่งสามารถทำได้โดยใช้เทคนิคต่างๆ เช่น การทำให้ชื่อตัวแปรและฟังก์ชันอ่านไม่ได้ หรือโดยการเพิ่มเลเยอร์พิเศษของทางอ้อมหรือความซับซ้อนให้กับโค้ด การทำให้งงงวยมักใช้เพื่อปกป้องทรัพย์สินทางปัญญาหรือเพื่อป้องกันการยุ่งเกี่ยวกับโปรแกรมที่เป็นอันตราย (ขอบคุณChatGPT )

เหตุใดโค้ดจึงยุ่งเหยิง

หากคุณกำลังพัฒนาแอปที่ความปลอดภัยของข้อมูลผู้ใช้อยู่เหนือสิ่งอื่นใด คุณจะประนีประนอมไม่ได้ แม้ว่าการรักษาความปลอดภัยที่พิสูจน์ไม่ได้เป็นเรื่องโกหก แต่เราสามารถขยายขอบเขตได้โดยใช้วิธีเหล่านี้:

  1. ย่อโค้ดของคุณ (หรือเขย่าต้นไม้) : ตรวจพบและลบคลาส ฟิลด์ เมธอด และแอตทริบิวต์ที่ไม่ได้ใช้ออกจากแอปของคุณอย่างปลอดภัย

3. เปิดใช้งาน proguard : ใช้กฎของ proguard เพื่อกำหนดว่าไฟล์ใดที่คุณไม่ต้องการเปลี่ยนระหว่างกระบวนการลดขนาดและย่อขนาด

ข้ามไปที่ส่วน How กันเลย

ทำให้งงโดยใช้คำสั่ง 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